ID.X是有效的JSON密钥-无法使用newtonsoft库解析它

ID.X是有效的JSON密钥-无法使用newtonsoft库解析它,json,json.net,Json,Json.net,我正在使用NewtonSoft管理ResJson字符串 我想从此字符串中检索项目: { "ID.1": "File and Menu", "ID_2": "Test Scenario" } var jtok=JObject.ParseResJsonText.SelectTokenpair.Key 仅检索第二项 我有最新的newtonsoft.json.dll版本 身份证有效吗? 我已经在jsonlint.com上测试了它,它说它是有效的。是的,密钥是有效的,但不能将密钥与密码一起使用。

我正在使用NewtonSoft管理ResJson字符串

我想从此字符串中检索项目:

{
  "ID.1": "File and Menu",
  "ID_2": "Test Scenario"
}
var jtok=JObject.ParseResJsonText.SelectTokenpair.Key

仅检索第二项

我有最新的newtonsoft.json.dll版本

身份证有效吗?
我已经在jsonlint.com上测试了它,它说它是有效的。

是的,密钥是有效的,但不能将密钥与密码一起使用。在SelectToken方法中,因为。作为该方法的导航操作员具有特殊意义。在这种情况下,ID.1意味着找到一个名为ID的属性,然后导航到其子对象,找到一个名为1的属性,然后获取其值。由于JSON中不存在这种排列,因此会得到一个空值

相反,您可以使用方括号语法:

JObject obj = JObject.Parse(json);
JToken token = obj["ID.1"];
如果您在一个JObject上循环使用键值对,我怀疑您是这样的,那么您不需要使用键值来获取值;您已经在对的值属性中包含它们:

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));
}
小提琴: