【发布时间】:2016-04-18 17:50:07
【问题描述】:
我正在将 json 字符串反序列化(或解析)为 c# 对象(使用 Json.NET)并获取 JObject。我想用键“bla”迭代所有属性,就像用 XElement.Elements("bla") 迭代所有名为“bla”的 xml 元素一样。
如果不可能,我想将我的 json 字符串反序列化为一个 c# 对象,并在我的反序列化 json 对象上动态和递归地工作(我的 json 字符串可以包含可以包含 2 种类型对象的列表/数组。 最后在编辑我的对象(更改值并删除或添加属性)之后,我需要将我的对象序列化回 json 字符串。 使用 json 序列化和反序列化的最佳和最简单的方法是什么?
我的 Json 看起来像这样:
{"Families":{"Family":[{"propA":"dhsj", "propB":"dhdisb"}, {"propA":"krbsbs", "propC":"ksndbd", "propD":"odndns", "Families":{"Family":[....]}}, {"propA":"dhsj", "propB":[{"propA":"dhsj", "propB":"dhdisb"}, {"propA":"krbsbs", "propC":"ksndbd", "propD":"odndns", "Families":{"Family":[....]}}, {"propA":"dhsj", "propB":"fghfgh"}]}]}
总之,json值是一个json对象,它的值是一个列表/数组,列表/数组可以包含2种“类型”的对象,其中一种类型也有一个属性,它的值是一个json它的值是一个列表/数组的对象,它递归地像这样。有时,没有属性的类型的道具之一的值是一个json对象,它的值是一个列表/数组,可以是一个列表/数组本身,它只能包含一种类型提到了两个。
【问题讨论】:
-
你看
JObject中的方法了吗?他们正是这样做的。 -
我没有找到类似于迭代 XElement.Elements("bla") 的 JObject 方法,它给了我每个名为 bla 的元素。
-
我调整了答案以适合您的 JSON,递归迭代到 N 级并动态添加属性。
标签: c# json xml object serialization