使用动态键反序列化 JSON 字符串

问题描述 投票:0回答:1

我有一个 JSON 字符串,其中一些键是动态的。

{
"status": {
    "code": "200",
    "message": "OK"
},
"total": 1,
"results": [
    {
        "leader": "00689cam a2200217 a 4500",
        "fields": [
            {
                "020": {
                    "ind2": "#",
                    "ind1": "#",
                    "subfields": [
                        {
                            "a": "9786041092587"
                        },
                        {
                            "c": "200000đ"
                        }
                    ]
                }
            },
            {
                "041": {
                    "ind2": "#",
                    "ind1": "0",
                    "subfields": [
                        {
                            "a": "vie"
                        }
                    ]
                }
            }
        ]
    }
]}

其中“020”、“041”、“a”、“c”为动态键。 我正在尝试将其反序列化为 C# 对象模型:

[DataContract]
public class Data
{
    [DataMember]
    public Status status { get; set; }
    [DataMember]
    public int total { get; set; }
    [DataMember]
    public List<Result> Results { get; set; }
}

[DataContract]
public class Status
{
    [DataMember]
    public string code { get; set; }
    [DataMember]
    public string message { get; set; }
}

[DataContract]
public class Result
{
    [DataMember]
    public string leader { get; set; }
    [DataMember]
    public List<Field> fields { get; set; }
}

[DataContract]
public class Field
{
    [DataMember]
    List<Tag> Tags { get; set; }
}

[DataContract]
public class Tag
{
    [DataMember]
    public string ind1 { get; set; }
    [DataMember]
    public string ind2 { get; set; }
    [DataMember]
    public List<subField> subfields { get; set; }
}

[DataContract]
public class subField
{
    [DataMember]
    public List<sCode> Codes { get; set; }
}

[DataContract]
public class sCode
{
    [DataMember]
    public string key { get; set; }
    [DataMember]
    public string value { get; set; }
}

我正在使用以下代码反序列化 JSON 格式:

string strJson = f["dataJson"].ToString();
var deserializedData = JsonConvert.DeserializeObject<Dictionary<string, Data>>(strJson);

我确信我错了,但我找不到它们。任何帮助将非常感激!非常感谢!

json asp.net-mvc dynamic model key
1个回答
0
投票

您正在尝试反序列化到字典中。将要反序列化的类型更改为您的

Data
类型似乎工作正常。

var deserializedData = JsonConvert.DeserializeObject<Data>(strJson);

https://dotnetfiddle.net/iq8qMa

我假设

f["dataJson"].ToString()
返回您在上面发布的 JSON 字符串。

© www.soinside.com 2019 - 2024. All rights reserved.