【发布时间】:2018-06-20 13:01:43
【问题描述】:
我在将 json 文件反序列化到我的班级时遇到问题。 Json 文件如下所示:
{
"DataFile": {
"header":{
"version": "123",
"date": "01.01.01",
},
"customer": {
"fID": "12-35-58",
"nameCust": "CompanyName",
"adressCust":{
"zip": "0000",
"city": "Foovile",
"streetNr": "1",
"post": "FoovilePost",
"street": "DunnoStr",
},
},
"content": [
{
"invoice":{
"DFID":"538",
},
"invoice":{
"DFID":"500",
},
"invoice":{
"DFID":"550",
},
"receipt":{
"DFID":"758",
},
"receipt":{
"DFID":"75",
},
}
],
}
}
内容数组反序列化之前的所有内容都很好,所以为了清楚起见,我将跳过部分课程。相关位如下所示:
class DFFile
{
public DF Df { get; set; }
}
class DF
{
public Header header { get; set; }
public Customer customer { get; set; }
public List<DFContent> content { get; set; }
}
class DFContent
{
public Invoice invoice { get; set; }
public Receipt receipt { get; set; }
}
class Invoice
{
public int DFID { get; set; }
}
class Receipt
{
public int DFID { get; set; }
}
我像这样反序列化为 DFFile 实例:
DFFile sample = JsonConvert.DeserializeObject<DFFile>(json);
我的问题是它反序列化时没有错误,但 sample.DF.content 只有一个元素,其中包含发票和收据以及每种类型的最后一个 ID。我正在寻找的结果是 json 内容数组的每个项目都有新元素的列表。 我可以改变我的班级,但是这个 json 的构建方式是一成不变的,对此无能为力,必须处理它。
有什么方法可以阻止它更改内容的最后一个元素并添加新元素吗?
【问题讨论】:
-
content 有一个包含一个对象的数组,并且您输入的键是相同的,因此它们将被覆盖。
-
你能改变你的班级结构吗?
-
@Jamie,是的,这就是这里的问题。我实际上还没有正确的 JSON 文件,我只有 JSON Schema,所以为了测试我创建了自己的测试 json 并在那里搞砸了。感谢您的快速回答
标签: c# json serialization arraylist