c# - How can I parse recursive data structures with JSON.NET? -



c# - How can I parse recursive data structures with JSON.NET? -

i have menuitem , screen entries defined in root element menustruct json string.

the of import thing here menuitem can contain other menuitems or screens.

i want parse whole json string json.net should receive tree menuitems can contain huge chain of nested menuitems or screen entries.

i snipped lot of nested structures next json string:

{ "menustruct": { "-text": "gui.menu.root", "-image": "gui.menu.home", "-mask": "gui.menu.home.mask", "-color": "#e0e0ff", "-menuid": "menutree", "menuitem": [ { "-text": "gui.menu.text.00000003", "-image": "gui.menu.menu", "-mask": "gui.menu.menu.mask", "-color": "#c0c0ff", "-menuid": "menu.id.00000003", "screen": [ { "-id": "gui.dlg.startupscreen", "-text": "gui.menu.text.00000103", "-image": "gui.menu.screen", "-mask": "gui.menu.screen.mask", "-menuid": "menu.id.00000103" }, { "-id": "gui.dlg.calls", "-text": "gui.menu.text.calls", "-image": "gui.menu.screen", "-mask": "gui.menu.screen.mask", "-menuid": "menu.id.00000203" } ], "menuitem": [ { "-text": "gui.menu.text.00000603", "-image": "gui.menu.menu", "-mask": "gui.menu.menu.mask", "-color": "#a0a0ff", "-menuid": "menu.id.00000603", "screen": [ { "-id": "gui.dlg.specialtrips", "-text": "gui.menu.text.00010603", "-image": "gui.menu.screen", "-mask": "gui.menu.screen.mask", "-menuid": "menu.id.00010603" }, { "-id": "gui.dlg.specialtrips", "-text": "gui.menu.text.00020603", "-image": "gui.menu.screen", "-mask": "gui.menu.screen.mask", "-menuid": "menu.id.00020603" } ] // end of screen } ] // end of nested menuitem }, /* snipped next menuitems */ ] // end of menuitem array } }

i tried deserialize whole thing

jsonconvert.deserializeobject<list<menuitem>>(jsonstring);

i have object menuitem has property of list<screen> , 1 of list<menuitem> whole thing doesn't work out. think deserializer not able handle nested menuitems.

i tried parse tree jobject think way need implement lot of parsing yourself.

jobject obj = jobject.parse(json); var menuitems = m in obj["menustruct"]["menuitem"].children() select m; list<menuentry> menues = this.loadmenustructure(menuitems);

here have create sure on right jtoken have no thought if i'm handling menuitem or screen.

is there no other, easier, way deserialize the json string without nesting me through structures?

thanks in advance help.

your original script has errors in , has additional blank , towards bottom. removed c# // comments tags should work

{ "menustruct": { "-text": "gui.menu.root", "-image": "gui.menu.home", "-mask": "gui.menu.home.mask", "-color": "#e0e0ff", "-menuid": "menutree", "menuitem": [ { "-text": "gui.menu.text.00000003", "-image": "gui.menu.menu", "-mask": "gui.menu.menu.mask", "-color": "#c0c0ff", "-menuid": "menu.id.00000003", "screen": [ { "-id": "gui.dlg.startupscreen", "-text": "gui.menu.text.00000103", "-image": "gui.menu.screen", "-mask": "gui.menu.screen.mask", "-menuid": "menu.id.00000103" }, { "-id": "gui.dlg.calls", "-text": "gui.menu.text.calls", "-image": "gui.menu.screen", "-mask": "gui.menu.screen.mask", "-menuid": "menu.id.00000203" } ], "menuitem": [ { "-text": "gui.menu.text.00000603", "-image": "gui.menu.menu", "-mask": "gui.menu.menu.mask", "-color": "#a0a0ff", "-menuid": "menu.id.00000603", "screen": [ { "-id": "gui.dlg.specialtrips", "-text": "gui.menu.text.00010603", "-image": "gui.menu.screen", "-mask": "gui.menu.screen.mask", "-menuid": "menu.id.00010603" }, { "-id": "gui.dlg.specialtrips", "-text": "gui.menu.text.00020603", "-image": "gui.menu.screen", "-mask": "gui.menu.screen.mask", "-menuid": "menu.id.00020603" } ] } ] } ] } }

jsonlint json validator

c# json json.net

Comments

Popular posts from this blog

web services - java.lang.NoClassDefFoundError: Could not initialize class net.sf.cglib.proxy.Enhancer -

Accessing MATLAB's unicode strings from C -

javascript - mongodb won't find my schema method in nested container -