我正在使用NewtonSoft来管理ResJson字符串。
我想从这个字符串中检索一个项目:
{
"ID.1": "File and Menu",
"ID_2": "Test Scenario"
}
var jtok = JObject.Parse(ResJsonText).SelectToken(pair.Key);
仅检索第二项。
我有最新的newtonsoft.json.dll版本。
ID有效吗? 我在jsonlint.com上对它进行了测试,并表示它是有效的。
答案 0 :(得分:0)
是的,密钥有效,但您无法在.
方法中使用SelectToken
的密钥,因为.
作为该方法的导航操作符具有特殊含义。在这种情况下,ID.1
意味着"找到一个名为ID
的属性,然后导航到其子对象并找到一个名为1
的属性,然后获取其值。由于您的JSON中不存在该排列,因此您将获得空值。
相反,您可以使用方括号语法:
JObject obj = JObject.Parse(json);
JToken token = obj["ID.1"];
如果你在JObject
(我怀疑你是)的键值对循环,那么你不需要使用键来获取值;你已经在对Value
属性中拥有它们了:
string json = @"{ ""ID.1"": ""File and Menu"", ""ID_2"": ""Test Scenario"" }";
var jo = JObject.Parse(json);
foreach (var pair in jo)
{
Console.WriteLine(pair.Key);
Console.WriteLine(pair.Value));
}