如何使用 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
数组中Name
和PAN
键的值应该是string
类型。您在上面 json.
中缺少 "
(double qoutes)
第二点也是最重要的一点,Id
的类型是一个整数,在您的 Json 路径中您尝试使用字符串类型进行搜索,即 '2'
,尝试搜索 Id
不带引号的整数就可以了。
//No single qoutes for 2.
JToken result = o.SelectToken("$.Databases[?(@.Id == 2)]");
我有一个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
数组中Name
和PAN
键的值应该是string
类型。您在上面 json.
"
(double qoutes)
第二点也是最重要的一点,Id
的类型是一个整数,在您的 Json 路径中您尝试使用字符串类型进行搜索,即 '2'
,尝试搜索 Id
不带引号的整数就可以了。
//No single qoutes for 2.
JToken result = o.SelectToken("$.Databases[?(@.Id == 2)]");