如何使用 SelectToken 从 Json 获取特定值

How to get a particular value from Json using SelectToken

我有一个JSON这样的

{
  "Customer": {
    "$type": "Dictionary`2",
    "Id": "6448DE37E2F3D9588118A1950"
  },
  "Databases": [
    {
      "$type": "Pime",
      "Id": 1,
      "Name": "Peter",
      "MobNo": 78877629,
      "PAN": "SAKKJKJ",
      "Defaulter": true,
    },
    {
      "$type": "Pime",
      "Id": 2,
      "Name": "James",
      "MobNo": 58277699,
      "PAN": "NAQKJKJ",
      "Defaulter": false,
    },
    {
      "$type": "Pime",
      "Id": 3,
      "Name": "Norton",
      "MobNo": 38877699,
      "PAN": "TAKKJKJ",
      "Defaulter": true,
    },
  ]
}

我正在使用令牌 select 节点和 return Id=2

的客户信息

我的代码是这样的:

StreamReader r = new StreamReader("C:\TestJson\Test.db");
string json = r.ReadToEnd();
JObject o = JObject.Parse(json);
JToken result = o.SelectToken("$.Databases[?(@.Id == '2')]");

但我得到的结果为空。我是否在 SelectToken() 方法中使用了错误的标记?

首先给出的JSON是无效的,在database数组中NamePAN键的值应该是string类型。您在上面 json.

中缺少 "(double qoutes)

第二点也是最重要的一点,Id 的类型是一个整数,在您的 Json 路径中您尝试使用字符串类型进行搜索,即 '2',尝试搜索 Id 不带引号的整数就可以了。

//No single qoutes for 2.
JToken result = o.SelectToken("$.Databases[?(@.Id == 2)]");