2013-07-18 54 views
1

我尝试使用JSON.NET解析JSON结构。第一级的所有属性都是正确的反序列化。使用JSON.NET解析递归未知的JSON结构

我有一个反序列化字典的问题。对象类型可以是任何东西:string,double,int,bool,List,Dictionary和递归。

例JSON:

{ 
    "id":"56d4f8sd4f86ds4f", 
    "name":"Azerty", 
    "dynProp": { 
     "xp":100, 
     "life":100, 
     "bonus": { 
      "force": 100, 
      "defense": 100 
     }, 
     "ennemies": { 
      "beast": { 
       "wolf": 100, 
       "bear": 20 
      } 
     } 
    } 
} 

在dynProp节点所有DATAS是动态的,我无法知道该对象类型,深度或任何东西。

为dynProp对象的输出中是类似的东西:

{{"dynProp","{xp:100, life: 100, bonus: {...}, ...}"}} 

事实上,JSON.NET放在对象值jobject,而不是在所有的内部件的字典或类似的东西。

我尝试添加序列化设置,这样的:

new JsonSerializerSettings 
    { 
     TypeNameHandling = TypeNameHandling.All, 
     TypeNameAssemblyFormat = FormatterAssemblyStyle.Simple 
    } 

,但没有成功...

预先感谢您的帮助!

编辑:我打开另一个框架,但它必须在.net 2.0上工作。

回答

0

我知道这个问题是明确的关于JSON.NET,但希望你不知道关于令人敬畏的ServiceStack库,我想添加一个建议,你移动到,而不是。特别是,ServiceStack.Text命名空间有一个JSON串行器,它的编号为much faster than JSON.NET's serializer

此外,他们有一个JSONObject.Parse方法更好地处理您的用例(我相信)。看到这个堆栈溢出后,其几乎一致,你在找什么:

ServiceStack.Text.JsonObject.Parse vs. NewtonSoft.Json.Linq.JObject.Parse for nested tree of 'dynamic' instances?

+0

ServiceStack工作在.NET 2.0? –

+0

对不起!我没有意识到你在2.0,ServiceStack根据他们的网站做了3.5+。 :( – welegan

+0

没问题,我没有提到它,这是我的错!) –