我收到一个JSON obejct来使用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);
问题: 由于&#34; 0&#34;我在为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#类生成器,要么失败,要么创建一个名为&#39; 0&#39;这当然不会编译。
注释: 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; }
}
答案 0 :(得分:6)
我相信你可以使用json.NET的属性属性系统来解决这个问题,文档就在这里。 http://james.newtonking.com/json/help/index.html?topic=html/SerializationAttributes.htm
public class ToClass
{
public Data[];
[JsonProperty(PropertyName = "0")]
public zero Zero = new zero();
}
这将使反序列化器将名为0
的json属性与名为Zero
的C#属性等同于