我有一个 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);
我确信我错了,但我找不到它们。任何帮助将非常感激!非常感谢!
您正在尝试反序列化到字典中。将要反序列化的类型更改为您的
Data
类型似乎工作正常。
var deserializedData = JsonConvert.DeserializeObject<Data>(strJson);
https://dotnetfiddle.net/iq8qMa
我假设
f["dataJson"].ToString()
返回您在上面发布的 JSON 字符串。