繁体   English   中英

反序列化JSON对象.net

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM