0

我正在尝试使用来自 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 中的数组项?

任何帮助,将不胜感激。

4

1 回答 1

0
  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;
于 2013-04-24T12:45:58.700 回答