C# 反序列化JSON对象.net
我对反序列化json对象有问题。我读了很多关于stackoverflow的文章,但没有找到解决方案。我使用.NET2.0和Newtonsoft库 下面是json字符串:C# 反序列化JSON对象.net,c#,.net,json,C#,.net,Json,我对反序列化json对象有问题。我读了很多关于stackoverflow的文章,但没有找到解决方案。我使用.NET2.0和Newtonsoft库 下面是json字符串: { "data": { "custom_fields": [{ "field": "segmentid", "value": "B" }, { "field": "subsegmentid",
{
"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类型(例如,不是integer之类的基元类型,也不是集合
可以从JSON反序列化的类型(如数组或列表)
对象还可以将JsonObjectAttribute添加到类型以强制它
从JSON对象反序列化。\r\n路径“data.email”
var SubscriberGet=JsonConvert.DeserializeObject(json);
公共类订阅服务器
{
[JsonProperty(“状态”)]
公共字符串状态{get;set;}
[JsonProperty(“数据”)]
公共列表数据{get;set;}
}
公共类数据格式
{
[JsonProperty(“电子邮件”)]
公共字符串电子邮件{get;set;}
[JsonProperty(“自定义_字段”)]
公共列表自定义_字段{get;set;}
[JsonProperty(“州”)]
公共字符串状态{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; }
}
公共类订阅集
{
[JsonProperty(“状态”)]
公共字符串状态{get;set;}
[JsonProperty(“数据”)]
公共列表数据{get;set;}
}
公共类数据格式
{
[JsonProperty(“电子邮件”)]
公共字符串电子邮件{get;set;}
[JsonProperty(“自定义_字段”)]
公共列表自定义_字段{get;set;}
[JsonProperty(“州”)]
公共字符串状态{get;set;}
}
公共类自定义字段
{
[JsonProperty(“字段”)]
公共字符串字段{get;set;}
[JsonProperty(“价值”)]
公共字符串值{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; }
}
公共类订阅集
{
[JsonProperty(“状态”)]
公共字符串状态{get;set;}
[JsonProperty(“数据”)]
公共列表数据{get;set;}
}
公共类数据格式
{
[JsonProperty(“电子邮件”)]
公共字符串电子邮件{get;set;}
[JsonProperty(“自定义_字段”)]
公共列表自定义_字段{get;set;}
[JsonProperty(“州”)]
公共字符串状态{get;set;}
}
公共类自定义字段
{
[JsonProperty(“字段”)]
公共字符串字段{get;set;}
[JsonProperty(“价值”)]
公共字符串值{get;set;}
}
这是处理我的json字符串的正确对象(感谢L.B.的链接)
公共类自定义字段
{
公共字符串字段{get;set;}
公共字符串值{get;set;}
}
公共类数据
{
公共列表自定义_字段{get;set;}
公共字符串电子邮件{get;set;}
公共字符串状态{get;set;}
}
公共类根对象
{
公共数据数据{get;set;}
公共字符串状态{get;set;}
}
这是处理我的json字符串的正确对象(感谢L.B.的链接)
公共类自定义字段
{
公共字符串字段{get;set;}
公共字符串值{get;set;}
}
公共类数据
{
公共列表自定义_字段{get;set;}
公共字符串电子邮件{get;set;}
公共字符串状态{get;set;}
}
公共类根对象
{
公共数据数据{get;set;}
公共字符串状态{get;set;}
}
自定义字段不是字符串列表。请查看此网站()为您生成的内容。自定义字段不是字符串列表。请查看此网站()为您生成的内容。您应该向用户1477388授予答案,因为他刚刚指定了答案。不需要创建相同的答案。jgauffin:如果你再(仔细地)阅读一次答案,你会发现不同之处。user1477388代码不起作用。您应该奖励user1477388答案,因为他刚刚指定了答案。不需要创建相同的答案。jgauffin:如果你再(仔细地)阅读一次答案,你会发现不同之处。user1477388代码不起作用。
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; }
}