有没有一种方法可以有条件地从JSON对象中提取一个值,该值的JSONPath基于同一对象中的另一个值



我有以下JSON对象

{"id":"15", "value":1}

我想提取值1,当且仅当id==15。

我尝试过的最相关的表达是

$?(@.id=="15").value

但它似乎不起作用,我只是找不到对手。

我在C#中使用json.net。

您必须了解什么是jsonPath。使用jsonPath从一个唯一的属性中提取内容是不可能的。这要容易得多

var jObj=JObject.Parse(json);
int? value = jObj["id"].ToString() == "15" ? (int)jObj["value"] : null; //1

json路径只适用于集合,所以将对象移动到数组中

var json = "[{"id":"15", "value":1}]";

var jArr = JArray.Parse(json);

int id= (int) jArr.SelectToken("$[?(@.id=='15')].value"); //1
//or
int id = (int) jArr.SelectToken("$[?(@.id=='15')]")["value"]; //1

最新更新