gpt4 book ai didi

c# - 我将如何返回具有重复键的特定 json 值

转载 作者:太空宇宙 更新时间:2023-11-03 21:59:18 31 4
gpt4 key购买 nike

我有以下 JSON

{
"nest1" : {
"attributes" : {
"type" : "irrelevant",
"url" : "irrelevant"
},
"key" : "value1"
},
"nest2" : {
"attributes" : {
"type" : "irrelevant",
"url" : "irrelevant"
},
"key" : "value2"
}
}

我尝试了类似下面的方法来获取第二个的值,但这会抛出一个InvalidOperationException。并显示以下错误消息:

Cannot access child value on Newtonsoft.Json.Linq.JProperty.

string value = getJson(json, "key");

方法看起来像

public string getJson(string json, string name)
{
JObject token = JObject.Parse(json);
JToken jtoken = token.Last.ToString();
return jtoken[name].toString();
}

我猜我可能忘记了一些简单的事情,任何帮助都会很棒

最佳答案

您的代码有两个问题:

  1. 您正在使用 ToString()不正确。如果您隐式转换 stringJToken像你一样,结果 JToken包含文本,而不是字符串表示的对象。所以你应该去掉对 ToString() 的调用.
  2. Last不返回 nest2 的值,它返回整个属性。要仅获取最后一个属性的值,您可以使用类似 token.PropertyValues().Last() 的东西.

因此,您的代码可能如下所示:

public static string GetJson(string json, string name)
{
JObject obj = JObject.Parse(json);
JToken lastValue = obj.PropertyValues().Last();
return lastValue[name].Value<string>();
}

最后一个我也改了ToString()Value<string>() ,因为我认为它在这里更有意义,即使它不会改变结果。

关于c# - 我将如何返回具有重复键的特定 json 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10920712/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com