Skip to content

Commit 0d10749

Browse files
committed
Merge branch 'addJSONSupport' into devel
2 parents 93150df + b074b09 commit 0d10749

File tree

2 files changed

+19
-0
lines changed

2 files changed

+19
-0
lines changed

dissect/cstruct/__init__.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
cstruct,
33
ctypes,
44
dumpstruct,
5+
dumpstructjson,
6+
loadstructjson,
57
hexdump,
68
Instance,
79
PointerInstance,
@@ -19,6 +21,8 @@
1921
"cstruct",
2022
"ctypes",
2123
"dumpstruct",
24+
"dumpstructjson",
25+
"loadstructjson",
2226
"hexdump",
2327
"Instance",
2428
"PointerInstance",

dissect/cstruct/cstruct.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import ctypes as _ctypes
3333
from io import BytesIO
3434
from collections import OrderedDict
35+
import json
3536

3637
try:
3738
from builtins import bytes as newbytes
@@ -1908,3 +1909,17 @@ def dumpstruct(t, data=None, offset=0):
19081909
hexdump(data, palette, offset=offset)
19091910
print()
19101911
print(out)
1912+
1913+
def serialize(ft):
1914+
if isinstance(ft, Instance):
1915+
newDict = {}
1916+
newDict['_type'] = str(ft._type.name)
1917+
newDict['_values'] = ft._values
1918+
newDict['_sizes'] = ft._sizes
1919+
return newDict
1920+
1921+
def dumpstructjson(ft):
1922+
return json.dumps(ft, default=serialize)
1923+
1924+
def loadstructjson(ft):
1925+
return json.loads(dumpstructjson(ft))

0 commit comments

Comments
 (0)