现有以下数据结构:javascript
{
"orderId":
"000001"
,
"goodsId[0]"
:
"001"
,
"goodsId[2]"
:
"002"
,
"goodsId[3]"
:
"003"
,
}
goodsId 是无限延伸下去的,问如何解析。java
显然,定义类而后解析的思路确定行不通,即便用dynamic(不须要定义实体类,直接取对应key的值),如: dynamic obj = JsonConvert.DeserializeObject(json); 这样也不行,缘由是obj.orderId能够表示,但后面的带有[]的,没法取出。json
所以咱们必需要换个思路。经过转换为JObject对象的属性Property,获取对应的Value,所以代码以下。数据结构
string json = "{\"orderId\":\"000001\",\"goodsId[0]\":\"001\",\"goodsId[3]\":\"003\",\"goodsId[10]\":\"new data\"}"; JObject jsonObj = JsonConvert.DeserializeObject(json) as JObject; foreach (var p in jsonObj.Properties().ToArray()) Console.WriteLine("key={0}, value={1}", p.Name, jsonObj[p.Name].Value<string>());