当前位置: 首页 > 面试题库 >

当我事先不知道密钥时,如何在C#中解析JSON对象?

耿和韵
2023-03-14
问题内容

我有一些看起来像这样的JSON数据:

{
  "910719": {
    "id": 910719,
    "type": "asdf",
    "ref_id": 7568
  },
  "910721": {
    "id": 910721,
    "type": "asdf",
    "ref_id": 7568
  },
  "910723": {
    "id": 910723,
    "type": "asdf",
    "ref_id": 7568
  }
}

如何使用JSON.net解析?我可以先这样做:

JObject jFoo = JObject.Parse(data);

我需要能够遍历此列表中的每个对象。我希望能够做这样的事情:

foreach (string ref_id in (string)jFoo["ref_id"]) {...}

要么

foreach (JToken t in jFoo.Descendants())
{
    Console.WriteLine((string)t["ref_id"]);
}

但是当然不行。如果您在编写代码时知道键,那么所有示例都可以很好地工作。如果您事先不知道密钥,它就会崩溃。


问题答案:

这是可行的;这可行,但并不优雅。我敢肯定有更好的方法。

var o = JObject.Parse(yourJsonString);

foreach (JToken child in o.Children())
{
    foreach (JToken grandChild in child)
    {
        foreach (JToken grandGrandChild in grandChild)
        {
            var property = grandGrandChild as JProperty;

            if (property != null)
            {
                Console.WriteLine(property.Name + ":" + property.Value);
            }
        }
    }
}

印刷品:

ID:910719
类型:asdf
ref_id:7568
ID:910721
类型:asdf
ref_id:7568
ID:910723
类型:asdf
ref_id:7568


 类似资料:
  • 问题内容: 数组: 如何在C#中解析上述json响应 问题答案: 在您提供的字符串 不正确 的格式,该阵列应该是: 您可以使用将其转换: 该工具在nuget中也可用。 如果要使用强类型:

  • 我想知道如何解析一个json对象,该对象将上载到我的服务器,以从中检索admob ad ID。 例子: 将发送到 任何帮助都将不胜感激! 编辑: 厌倦了这个: 我的Json文件:

  • 我正在尝试用动态字段键将json解组到json从storcli utility for linux返回的结构。一部分代码运行良好,但是如果json数据包含许多结构,我就不能解组它。我认为这是因为DriveDetailedInformation结构没有所有的json标签。有人能帮我吗?

  • 问题内容: 我有以下格式的JSON结果,JSON Lint将其显示为“有效响应”。 我的问题是:由于“ 141”,“ 8911”等都是动态值,我如何访问“ question_mark”的内容? 我的示例代码用于访问“产品”的价值。 JSON: 我的问题标题“动态键”可能是错误的,但目前我不知道该问题的最佳名称是什么。 任何帮助将不胜感激! 问题答案: 使用JSONObject keys() 获取密

  • 我很难找到解析JSONArray的方法。看起来是这样的: 如果JSON的编写方式不同(换句话说,如果返回的是JSON对象而不是对象数组),我知道如何解析它。但这是我所拥有的一切,我必须要去做。 *编辑:这是一个有效的json。我用这个json做了一个iPhone的应用程序,现在我需要为Android做,但无法解决这个问题。外面有很多例子,但它们都是与JSONObject相关的。我需要一些用于JSO

  • 问题内容: 我在从JSON对象提取值时遇到一些问题。这是我的代码 被声明为。代码运行时显示。如果将鼠标悬停在调试模式下,则可以看到对象中的所有值和名称。 我也试过 这回来了。即使将鼠标悬停在对象上,我也可以读取对象中的值。 这是我将使用的JSON字符串的示例。 问题答案: 最后,我使用而不是来解决它,然后将其强制转换为。