作为我的问题的后续跟进: JSON.NET:从JProperty Value获取JObject ...
我阅读了链接并消化了上述评论和建议.现在我想知道:有没有一个很好的理由为什么没有"直接"(即简单)方法将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对象的令人信服的理由是什么?
我还没有注意到,詹姆斯·牛顿写的国王或者谈到什么JToken 是.我做了一个错误的假设,它以某种方式持有一个参考JObject.情况并非如此,因为这些LINQPad语句演示了:
var json = @"
{
""item"": {
""foo"": ""4"",
""bar"": ""42""
}
}
";
var jO = JObject.Parse(json);
var jToken = jO["item"]["foo"];
jToken = "5";
jO.ToString().Dump("jO");
jToken.Dump("jToken");
Run Code Online (Sandbox Code Playgroud)
输出:
jO
{
"item": {
"foo": "4",
"bar": "42"
}
}
jToken
5
Run Code Online (Sandbox Code Playgroud)
不应该jO["item"]["foo"] == 5?