Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JObject.SelectToken作为JObject Newtonsoft.JSON C#_C#_Json_Json.net - Fatal编程技术网

JObject.SelectToken作为JObject Newtonsoft.JSON C#

JObject.SelectToken作为JObject Newtonsoft.JSON C#,c#,json,json.net,C#,Json,Json.net,我想以递归的方式查询JObject,并再次查询结果 因此,JObject.SelectToken是结果属性。因此,再次查询属性并没有得到值,因为它不是JObject 所以,请任何人给我一个方法来实现这一点 示例代码: JObject Jobj = JObject.parse(@"{ ""patient_demog_information"": { ""patient_id"": ""2558765"", ""patient_name"": { ""given_na

我想以递归的方式查询
JObject
,并再次查询结果

因此,
JObject.SelectToken
是结果属性。因此,再次查询属性并没有得到值,因为它不是
JObject

所以,请任何人给我一个方法来实现这一点

示例代码:

JObject Jobj = JObject.parse(@"{
  ""patient_demog_information"": {
    ""patient_id"": ""2558765"",
    ""patient_name"": {
      ""given_name"": ""29 th june 2018"",
      ""family_name"": ""0016"",
      ""middle_name"": """",
      ""suffix_name"": """",
      ""prefix_name"": """",
      ""degree_name"": """"
    }
  }
}");
所以,不是直接以分步方式,我在patient_name中得到了中间的_name值

JToken pat_demog = Jobj.SelectToken("$.patient_demog_information");

JToken pat_name = pat_demog.SelectToken("$.patient_name");
因此,这里我得到的是
pat\u demo
,通过查询它没有得到
pat\u名称

因为它不是一个属性
JObject

,我不太清楚您的意思,但您可以继续使用
SelectToken
继续向下钻取树,例如:

JObject Jobj = JObject.Parse(@"{
  ""patient_demog_information"": {
    ""patient_id"": ""2558765"",
    ""patient_name"": {
      ""given_name"": ""29 th june 2018"",
      ""family_name"": ""0016"",
      ""middle_name"": """",
      ""suffix_name"": """",
      ""prefix_name"": """",
      ""degree_name"": """"
    }
  }
}");

JToken pat_demog = Jobj.SelectToken("$.patient_demog_information");

JToken pat_name = pat_demog.SelectToken("$.patient_name");

JValue family_name = (JValue)pat_name.SelectToken("$.family_name");

Console.WriteLine(family_name.Value);
上面的转换为
JValue
,但是我们可以直接转换为字符串

string value = (string)pat_name.SelectToken("$.family_name");

Console.WriteLine(value);

我不完全确定您的意思,但您可以继续使用
SelectToken
继续向下钻取树,例如:

JObject Jobj = JObject.Parse(@"{
  ""patient_demog_information"": {
    ""patient_id"": ""2558765"",
    ""patient_name"": {
      ""given_name"": ""29 th june 2018"",
      ""family_name"": ""0016"",
      ""middle_name"": """",
      ""suffix_name"": """",
      ""prefix_name"": """",
      ""degree_name"": """"
    }
  }
}");

JToken pat_demog = Jobj.SelectToken("$.patient_demog_information");

JToken pat_name = pat_demog.SelectToken("$.patient_name");

JValue family_name = (JValue)pat_name.SelectToken("$.family_name");

Console.WriteLine(family_name.Value);
上面的转换为
JValue
,但是我们可以直接转换为字符串

string value = (string)pat_name.SelectToken("$.family_name");

Console.WriteLine(value);

您期望的输出是什么?@KevinSmith我想获取“patient\u name”属性值,然后再次从该结果中筛选“middle\u name”。因此,通过这种方式,我希望筛选出的值依赖于路径“$.patient\u demog\u information.patient\u name.middle\u name”逐步进行。您期望的输出是什么?@KevinSmith我希望获得“patient\u name”属性值,并再次从该结果中筛选“middle\u name”。因此,通过这种方式,我希望筛选出的值取决于路径“$.patient\u demog\u information.patient\u name.middle\u name”逐步。SelectToken返回令牌值,而不是令牌本身,因此进一步筛选不起作用!啊,对了,把它转换成一个
JValue
或字段的值。。。例如
string
JToken pat\u demog=Jobj.SelectToken(“$.patient\u demog\u information”)
pat_demog包含如下值:
“患者id”:“2558765”,“患者姓名”:“{”给定姓名“:”2018年6月29日“,”家人姓名“:”0016“,”中间姓名“:”,”后缀名“:”,”前缀名“:”,”学位名“:”}
所以这里的问题是过滤这个值!因为它不是对象,所以通过使用
patient\u name
值对其进行过滤,返回null@AbdulRahman这工作得非常好,签出dotnetfiddle-SelectToken返回令牌值,而不是令牌本身,因此进一步过滤不起作用!啊,对了,把它转换成一个
JValue
或字段的值。。。例如
string
JToken pat\u demog=Jobj.SelectToken(“$.patient\u demog\u information”)
pat_demog包含如下值:
“患者id”:“2558765”,“患者姓名”:“{”给定姓名“:”2018年6月29日“,”家人姓名“:”0016“,”中间姓名“:”,”后缀名“:”,”前缀名“:”,”学位名“:”}
所以这里的问题是过滤这个值!因为它不是对象,所以通过使用
patient\u name
值对其进行过滤,返回null@AbdulRahman这工作非常好,检查dotnetfiddle-