Json.net如何使用jsonpath以“$”。(Json.net how to use json

2019-11-01 10:11发布

我试图用json.net从JSON如下:

String JSONString =
@"[
    {
      ""category"": ""reference"",
      ""author"": ""Nigel Rees"",
      ""title"": ""Sayings of the Century"",
      ""price"": 8.95
    },
    {
      ""category"": ""fiction"",
      ""author"": ""Still Here"",
      ""title"": ""Test remove title"",
      ""price"": 12.99,
      ""isbn"": ""0-553-21311-3""
    }
  ]";

JObject JSONObject;
JSONObject = JObject.Parse(JSONString);

String JSONPath = @"$[0].title";
JSONObject.SelectToken(JSONPath);

获取例外:

ST.Acxiom.Test.DataJSONTest.DataJSONClass.GetToken: Newtonsoft.Json.JsonException :   Property '$' does not exist on JObject.   
  • 什么我做错了,即使我使用的有效jsonpath但仍然得到错误。
  • 为 “$”。 不支持?
  • 如何访问数组元素在JSON在上面的例子?

任何帮助,将不胜感激。

Answer 1:

  1. 使用JObject.Parse从您的示例引发JsonReaderException与最新版本Json.net。 ,你必须使用两种JToken.ParseJsonConvert.DeserializeObject
  2. SelectToken旨在选择子节点,以便$不支持。 你可以这样访问数组项:
var jArray = JToken.Parse(JSONString); //It's actually a JArray, not a JObject
var jTitle = jArray.SelectToken("[0].title");
var title = (string)jTitle;


文章来源: Json.net how to use jsonpath with “$.”