Json.net如何使用带有“$”的jsonpath。

时间:2013-01-15 23:03:46

标签: c# json.net jsonpath

我正在尝试使用json中的json.net,如下所示:

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?

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

  1. 使用示例中的JObject.ParseJsonReaderException与最新的Json.net版本一起抛出。您必须使用JToken.ParseJsonConvert.DeserializeObject
  2. SelectToken旨在选择子节点,因此不支持$。您可以像这样访问数组项:
  3. var jArray = JToken.Parse(JSONString); //It's actually a JArray, not a JObject
    var jTitle = jArray.SelectToken("[0].title");
    var title = (string)jTitle;