C# 反序列化JSON对象.net

C# 反序列化JSON对象.net,c#,.net,json,C#,.net,Json,我对反序列化json对象有问题。我读了很多关于stackoverflow的文章,但没有找到解决方案。我使用.NET2.0和Newtonsoft库 下面是json字符串: { "data": { "custom_fields": [{ "field": "segmentid", "value": "B" }, { "field": "subsegmentid",

我对反序列化json对象有问题。我读了很多关于stackoverflow的文章,但没有找到解决方案。我使用.NET2.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类型(例如,不是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; }
}