【发布时间】:2019-08-05 14:15:22
【问题描述】:
我有以下 json:
{
"Australia": {
"count": 2,
"records": {
"File1.ppt": {
"id": "123456789"
},
"File2.doc": {
"id": "987654321"
}
}
},
"PDFs.zip": {
"count": 0,
"records": {}
},
"Peru": {
"count": 2,
"records": {
"File3.PPT": {
"id": "897456123"
},
"File4.PPT": {
"id": "123546789"
}
}
},
"total count": 4
}
为了反序列化上面的 json,我定义了一些类,这样我就可以在将我的 json 反序列化为对象时使用这些类,下面是这些类:
namespace GEO_Batch_Creation
{
[DataContract]
class BhpIdJson
{
[DataMember(Name = "objects")]
public Dictionary<string, Country[]> Countries { get; set; }
[DataMember(Name = "total count")]
public int TotalCount { get; set; }
}
[DataContract]
class Country
{
[DataMember(Name = "count")]
public int Count { get; set; }
[DataMember(Name = "records")]
public Dictionary<string, Record> Records { get; set; }
}
[DataContract]
class Record
{
[DataMember(Name = "filename")]
public string FileName { get; set; }
[DataMember(Name = "id")]
public Dictionary<string, string> BhpId { get; set; }
}
}
但是当我使用以下代码反序列化 json 时,我得到的只是总数。
using (var ms = new MemoryStream(Encoding.Unicode.GetBytes(json)))
{
// Deserialization from JSON
DataContractJsonSerializer deserializer = new DataContractJsonSerializer(typeof(BhpIdJson));
BhpIdJson bsObj2 = (BhpIdJson)deserializer.ReadObject(ms);
}
请建议我在哪里做错了。
【问题讨论】:
-
我建议使用 JSON.NET 和 app.quicktype.io?share=4Jf5zFTxMJF2iOu62REc 。
-
你的json没有
objects属性 -
这个 json 是从哪里生成的,因为它与你的 c# 类不匹配
-
如果 C# 类有任何问题,请建议我,我会修复它。实际上有人建议对于根元素你可以这样写。
-
你看我建议的链接了吗?
标签: c# json json-deserialization