作为我的问题的后续跟进: JSON.NET: Obtain JObject from JProperty Value ......
我阅读链接并消化了上述评论和建议。现在我想知道:有没有一个很好的理由为什么没有"直接" (即,简单)将JProperty对象的值转换为JObject的方法?到达一个JToken似乎需要做很多工作,然后必须构建if语句等。这不是抱怨额外的工作;相反,它承认我仍然认为我不了解JToken的真正目的。有一次,所有FedEx软件包首先被路由到孟菲斯:似乎所有对象都可以/应该首先转到JToken然后被分配到实际的目标对象类型。这是一种思考方式吗?
换句话说,是否有充分的理由使用JToken - 或者只是因为许多其他函数返回JToken然后你必须处理它? JSON.NET手册提供了将JToken转换为其他类型(http://www.newtonsoft.com/json/help/html/Operators_T_Newtonsoft_Json_Linq_JToken.htm)的方法,但没有提到从JToken转到JObject ...
我发现JObject通常是我想拥有的,以便使用JSON并从JSON映射到我的.NET类,然后再返回 - 以及执行许多其他操作。我仍然想知道使用JToken对象的令人信服的理由是什么?
答案 0 :(得分:26)
从standard开始,JSON由以下五种令牌构成:
true
或false
或{ {1}},或对象或数组。这些结构可以嵌套。 JToken
是一个抽象基类,表示这些可能的标记中的任何一个。如果你有一些JSON并且事先不知道里面有什么,你可以用JToken.Parse()
解析它并只要JSON有效就得到结果。如果根JSON令牌不是预期类型,则JObject.Parse()
和JArray.Parse()
将抛出。并且没有JValue.Parse()
来解析你知道代表" atomic"的JSON字符串。价值,要求在这种情况下使用null
。