2

我尝试使用 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 节点中的所有数据都是动态的,我不知道对象类型、深度或任何内容。

dynProp 对象的输出是这样的:

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

事实上,JSON.NET 将对象值放入对象中,而不是内部字典或类似的东西。

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

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

但是没有成功...

在此先感谢您的帮助!

编辑:我对另一个框架持开放态度,但它必须在 .net 2.0 上工作。

4

1 回答 1

0

我知道这个问题是关于 JSON.NET 的,但希望你不知道很棒的 ServiceStack 库,我想添加一个建议,建议你改为使用它。具体来说,ServiceStack.Text 命名空间有一个 JSON 序列化器,它比 JSON.NET 的序列化器快得多

此外,他们有一个 JSONObject.Parse 方法可以更好地处理您的用例(我相信)。请参阅此堆栈溢出帖子,该帖子与您要查找的内容非常匹配:

ServiceStack.Text.JsonObject.Parse 与 NewtonSoft.Json.Linq.JObject.Parse 的“动态”实例嵌套树?

于 2013-07-18T14:53:05.513 回答