【发布时间】:2014-03-31 17:00:59
【问题描述】:
我收到一个 JSON 对象以使用 MVC4 启动 Web 会话。我需要将其解析为 C# 对象以供以后使用。我无法更改我收到的对象 - 它来自第三方。
我用来解析的方法:
MyClass jsonObject = new MyClass();
//The 2 lines below will not work with the given answer
//JavaScriptSerializer serializer = new JavaScriptSerializer();
//jsonObject = serializer.Deserialize<MyClass >(jsonString);
//Use this method instead
jsonObject = JsonConvert.DeserializeObject<MyClass>(jsonString);
问题: 由于内部对象的“0”名称,我无法为 JSON 的这一部分定义 C# 类。
JSON:
{
"header": {
"to": {
"data": [],
"0": {
"data": [],
"value": "1101",
"domain": "DUNS"
}
},
"from": {
"data": [],
"0": {
"data": [],
"value": "1101",
"domain": "NetworkID"
}
},
"sender": {
"data": {
"UserAgent": "Test Client v1"
},
"0": {
"data": {
"SharedSecret": "test"
},
"value": "testing@smith.com",
"domain": "testClientID"
}
}
},
...
}
注意:我已经尝试过在线 json 到 C# 类生成器,要么失败,要么创建一个名称为“0”的类,这当然无法编译。
评论: MyClass 是这样的:
public class Header
{
public ToClass to = new ToClass ();
public FromClass to = new FromClass ();
}
public class ToClass
{
public Data[];
public zero 0 = new zero();
}
public class zero
{
public string data { get; set; }
public string value { get; set; }
public string domain { get; set; }
}
【问题讨论】:
-
您是否尝试过使用 Json.NET 将其解析为 JObject?
-
在这种情况下你想让它做什么?
MyClass长什么样子? -
数据有点奇怪。 sender 中的“0”.data 属性似乎不是数组类型,而在 to 和 from 中却是。解决 PropertyName 问题后,您可能会遇到一些麻烦。
-
@AndrewWhitaker 使用 MyClass 编辑 - 我需要一个 C# 类,它将接收来自 JSON 帖子的所有参数,并在整个用户会话中使用这个类和值。这是针对电子商务采购系统的打孔实施。
-
@cgotberg 感谢您的提醒。我相信第三方应用程序会保持一致(至少按照规范)。但奇怪的是,他们发送的是一个相当嵌套的对象。
标签: c# json asp.net-mvc-4