[英]deserializing JSON object .net
我在反序列化json对象时遇到问题。 我在stackoverflow上阅读了很多线程,但是没有找到解决方案。 我使用.net 2.0和Newtonsoft库。
以下是json字符串:
{
"data": {
"custom_fields": [{
"field": "segmentid",
"value": "B"
},
{
"field": "subsegmentid",
"value": "TM3"
},
{
"field": "contactpersonid",
"value": "000187_003"
},
{
"field": "firstname",
"value": "ZBIGNIEW"
},
{
"field": "agreetment",
"value": "1"
},
{
"field": "contactname",
"value": "ZBIGNIEW TESTOWY"
},
{
"field": "decisionmaking",
"value": "0"
},
{
"field": "lastpurchase",
"value": ""
},
{
"field": "agethresholds",
"value": "0"
},
{
"field": "tendercust",
"value": ""
}],
"email": "myself@example.com",
"state": "1"
},
"status": "OK"
}
我开发了两个类,但仍然出现错误。
无法将当前JSON对象(例如{\\“ name \\”:\\“ value \\”})反序列化为类型'System.Collections.Generic.List`1 [FMIntegration.DataFM]',因为该类型需要JSON数组(例如[ \\ 1,2,3])以正确地反序列化。\\ r \\ n要解决此错误,请将JSON更改为JSON数组(例如[1,2,3])或更改反序列化的类型,使其成为常规的.NET类型。 (例如,不是整数之类的原始类型,不是数组或List之类的集合类型),可以从JSON对象反序列化。 也可以将JsonObjectAttribute添加到类型中,以强制其从JSON对象反序列化。\\ r \\ nPath'data.email'
var SubscriberGet = JsonConvert.DeserializeObject<SubscriberGet>(json);
public class SubscriberGet
{
[JsonProperty("status")]
public string Status { get; set; }
[JsonProperty("data")]
public List<DataFM> Data { get; set; }
}
public class DataFM
{
[JsonProperty("email")]
public string Email { get; set; }
[JsonProperty("custom_fields")]
public List<String> custom_fields { get; set; }
[JsonProperty("state")]
public string State { get; set; }
}
自定义字段不是字符串列表,而是“字段和值”对的列表。
尝试这个:
public class SubscriberGet
{
[JsonProperty("status")]
public string Status { get; set; }
[JsonProperty("data")]
public List<DataFM> Data { get; set; }
}
public class DataFM
{
[JsonProperty("email")]
public string Email { get; set; }
[JsonProperty("custom_fields")]
public List<CustomField> custom_fields { get; set; }
[JsonProperty("state")]
public string State { get; set; }
}
public class CustomField
{
[JsonProperty("field")]
public string field { get; set; }
[JsonProperty("value")]
public string value { get; set; }
}
这是处理我的json字符串的正确对象(感谢LB的链接)
public class CustomField
{
public string field { get; set; }
public string value { get; set; }
}
public class Data
{
public List<CustomField> custom_fields { get; set; }
public string email { get; set; }
public string state { get; set; }
}
public class RootObject
{
public Data data { get; set; }
public string status { get; set; }
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.