【问题标题】:JObject Not Parsing Values I needJObject 不解析我需要的值
【发布时间】:2021-12-26 04:49:03
【问题描述】:
String Contents =
{
    "links":[
    {
        ".tag":"file",
        "url":"myURL",
        "id":"CCCCC",
        "name":"CCCC",
        "path_lower":"CCCC"
    },
    {
        "url".. and so on.
    }

    JObject json = JObject.Parse(contents);
    Console.WriteLine(json.GetValue("links.url"));

我正在尝试获取所有 URL 值并将它们存储到一个数组中。问题是这段代码没有解析任何东西。

主要的json是链接,其余的都在它下面。如何获取所有 URL 值?

【问题讨论】:

  • 循环遍历链接数组?
  • @Llama 我当前的代码甚至不只解析我需要的 url 值。循环有什么帮助??
  • 如果您想使用 JPath,您可以使用 json.SelectToken("links[0].url"),但这只会让您获得第一个对象

标签: c# json parsing


【解决方案1】:
  1. json["links"]JArray
  2. 使用 Linq 从 (1) 中的元素中检索 url 并将其转换为 string
using System.Collections.Generic;
using System.Linq;
using Newtonsoft.Json.Linq;

JObject json = JObject.Parse(contents);
JArray array = json["links"] as JArray;

List<string> links = array.Select(x => (string)x["url"]).ToList();

Sample demo on .NET Fiddle

【讨论】:

  • 你我的先生是最棒的!!!这很完美。一个快速的问题。为什么需要 JArray?
  • 嗨,不客气。因为links 是一个数组。在检索数组中的每个元素之前,您必须转换为 JArray。并祝您节日快乐。
  • 听起来不错!还有两个问题。 1. 这种方法效率如何? 2.如何知道一个JSON是不是一个数组?
  • 抱歉回复晚了。 1.为了效率,这取决于你的JSON对象如何。您的 JSON 对象是否是动态的,大小。这篇文章JObject.Parse vs JsonConvert.DeserializeObject可能对你有用。 2.当对象/属性有value surrounded with []时。
  • 所以另一个问题。当它是单个 JSOn 而不是数组时,此代码有时不起作用。我怎样才能检查它是否是一个数组或不容易?另外我将如何解析那个单一的 JSOn?
猜你喜欢
  • 1970-01-01
  • 2021-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-09
  • 2016-07-14
相关资源
最近更新 更多