我有一个返回以下json的Web服务

{
   "1": 1.654764367578323,
   "3": 1.654764367578323,
   "4": 1.654764367578323,
   "6": 1.654764367578323,
   "12": 1.13901127184207
}


另外,可能有10或15或24,如下所示。所以我需要检查json字符串1,3,4,6,10,15,24中是否包含以下名称

{
   "1": 1.654764367578323,
   "3": 1.654764367578323,
   "4": 1.654764367578323,
   "6": 1.654764367578323,
   "10": 1.13901127184207
}


我想反序列化上面的json,所以我尝试了

dynamic d = JsonConvert.DeserializeObject(jsonstring);


但我无法执行d.1并获得值1.654764367578323。

但是,在手表中,我得到“期望结束表达”

最佳答案

您可以将JsonConvert.DeserializeObject(jsonstring)返回的对象转换为JObject,然后可以从其中读取值,就像这样。

JObject d = (JObject)JsonConvert.DeserializeObject(jsonString);
string value1 = d["1"].Value<string>();


这是Demo

您始终可以检查返回的JToken是否为null,如果JObject找不到索引器中提供的属性,则它将为null。

bool attributeExist = d[attribute] != null;


Here

09-25 19:20