【发布时间】:2015-02-10 23:27:54
【问题描述】:
我正在解析第三方返回的 JSON 数据。
我的课程是使用 JSON2CSharp 生成的,它适用于我们收到的第一个示例。我对其进行了调整,使其具有一些 JsonProperty 设置,因此它不需要某些并不总是存在的属性。
现在我收到了更多样本,其中一个数据块更改了格式
需要
public Translations Translations { get; set; }
到
public List<Translations> Translations { get; set; }
然而,blob 是我们不需要的信息,对于性能和不必处理该信息以及我们不需要更改格式的其他信息,在反序列化它时忽略它是理想的。
现在真正的问题是,“JsonIgnore”是否应该忽略整个数据块,而不管其格式是否与类中定义的格式不同?还是我必须围绕它进行编程?
如果我这样做了
[JsonIgnore]
public string Translations { get; set; }
当它收到一个列表或一个对象时,它是否也会忽略翻译?
我可以在 JsonIgnore 中使用与 JsonProperty 相同的语法,然后说
[JsonIgnore(PropertyName = "translations")]
还是 JsonIgnore 只是扔掉它收到的任何东西?
补充问题:
是否约定当没有翻译时,我得到:
"translations":[]
当我得到翻译时:
"translations":{"CA":"blabla","DD":"C : blablah"}
或者这可能是第三方网站的错误?
添加:
1:Translations 可以在每次提取 JSON 之间在字符串、列表和对象之间切换。
2:对于使用 DataMembers 忽略我实际上不需要的所有内容,在具有子类的类中,我必须告诉它子类是 [DataMember] 还是子类属性是 [DataMember]?
【问题讨论】:
标签: c# json deserialization