Set Class Property From Multi-level JObject Property
我有一类具有这样的属性:
1 2
| [JsonProperty("property_name")]
public string PropertyName { get; internal set; } |
然后使用[JObject].ToObject()填充类的属性。 通常,这可以正常工作,但是JObject中的某些属性要低几个级别。 例如,可以通过items.first_group.property访问它们。 但是,如果我尝试将JsonProperty的PropertyName设置为该值,例如
1
| [JsonProperty("monkeyOne.name")] |
它只是没有设置值。 我是在做错什么,还是真的不可能做到这一点? 如果不是,那是有原因还是只是没有实施?
当您说它"下降了几级"时,表明没有属性" monkeyOne.name"。
可能有一个属性" monkeyOne",它是一个具有"名称"属性的对象,但这是完全不同的事情。
仅当JObject的整体结构与类结构匹配时,才可以使用ToObject。
-
是的,我知道如何在它与类结构匹配时使用它,但是似乎无法进入多个级别似乎有点疏忽。(例如,您可以执行)。 这是特别正确的,因为当我真正想要的只是每只猴子的名字时,我可能不想创建几个"猴子"类并使它们吃掉内存。
-
令牌的路径与属性名称完全不同。 如果您认为这是一个疏忽,则可以在此处提出:github.com/JamesNK/Newtonsoft.Json/issues
-
另外,您可以通过将其转换为dynamic来直接使用JObject(而无需反序列化为匹配的C#类)。 然后,您可以使用代码从JObject映射到所需的C#对象。 此处为一些示例:weblog.west-wind.com/posts/2012/Aug/30/