反序列化json字符串,其中name属性是一个数字

shr*_*aal 3 c# json json.net

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

{
   "1": 1.654764367578323,
   "3": 1.654764367578323,
   "4": 1.654764367578323,
   "6": 1.654764367578323,
   "12": 1.13901127184207
}
Run Code Online (Sandbox Code Playgroud)

此外,可能有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
}
Run Code Online (Sandbox Code Playgroud)

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

dynamic d = JsonConvert.DeserializeObject(jsonstring);
Run Code Online (Sandbox Code Playgroud)

但我不能做d.1并获得值1.654764367578323.

然而,在手表中,我得到"期待结束"

Rao*_*san 8

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

JObject d = (JObject)JsonConvert.DeserializeObject(jsonString);
string value1 = d["1"].Value<string>();
Run Code Online (Sandbox Code Playgroud)

这是Demo

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

bool attributeExist = d[attribute] != null;
Run Code Online (Sandbox Code Playgroud)

看到这里