【发布时间】:2012-05-11 17:46:56
【问题描述】:
我正在使用 C# .NET 4.0 将 JSON 解析为自定义对象。我正在使用 JavaScriptSerializer.Deserialize 将其映射到我编写的类。问题是,JSON 的名称/值对不是静态的,并且会根据参数 isChain 的不同而有所不同,如以下 JSON 片段所示(底部有更好的链接):
{
"STATE_WALK_LEFT":{
"isChain":"1",
"x":"1"
},
"STATE_WALK_LEFT_0":{
"x":"0"
},
"STATE_WALK_LEFT_1":{
"x":"40"
},
"STATE_WALK_LEFT_2":{
"x":"80"
},
"STATE_WALK_RIGHT":{
"isChain":"0"
},
"STATE_RUN_LEFT":{
"isChain":"0"
}
}
链可以在链中包含从 _STATE_0 到 _STATE_25 的任何条目。有什么方法可以存储这些数据,这样我就不必像这样编写 12*26 的空类:
public StateWalkLeft0 STATE_WALK_LEFT { get; set; }
public StateWalkLeft0 STATE_WALK_LEFT_0 { get; set; }
public StateWalkLeft1 STATE_WALK_LEFT_1 { get; set; }
public StateWalkLeft2 STATE_WALK_LEFT_2 { get; set; }
public StateWalkLeft3 STATE_WALK_LEFT_3 { get; set; }
是否有一个库或其他方法可以用来部分解析仅 STATE_0、STATE_1 等字段?您能否建议一种方法来添加这些最近添加的 JSON 对?
编辑澄清: 为了了解我正在使用什么,这里是从 JSON 派生的类:
Check out my full Class to get an idea of what the JSONs contain
基本上,我只需要一种方法以某种方式将这些最近实现的链存储在此类中以进行处理。所有这些类/属性都是从这些 JSON 生成的。
【问题讨论】:
-
“我宁愿不使用递归、第 3 方库或反序列化为 var/dynamic。”祝你在这些范围内找到解决方案
-
你可以通过Json.NET轻松做到这一点
-
@casperOne +1,但我建议在此之上使用fastJSON。 Json.NET 非常缓慢且庞大,并且由于其复杂性而难以进行修改。
-
@Erode 有趣,我不知道这个。和I see it's on NuGet。我得试试看。
标签: c# .net json parsing deserialization