相关疑难解决方法(0)

JSON.NET:为什么要使用JToken?

作为我的问题的后续跟进: 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对象的令人信服的理由是什么?

json.net

13
推荐指数
1
解决办法
1万
查看次数

JToken不是JObject的参考?

我还没有注意到,詹姆斯·牛顿写的国王或者谈到什么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

json.net linqpad

2
推荐指数
1
解决办法
1319
查看次数

标签 统计

json.net ×2

linqpad ×1