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

时间:2014-04-09 00:31:01

标签: c# json json.net

我有一个返回以下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。

然而,在手表中,我得到了#34;期待结束的表达"

2 个答案:

答案 0 :(得分:8)

您可以将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

答案 1 :(得分:1)

尝试d [12]。这很大程度上取决于你的Json库。