0

我如何解析这个 JSON 结果:

{
   "Output": [
      {
         "LGA11aAust.DistanceToBorder": "2587.4",
         "LGA11aAust.LGA_NAME": "Hume (C)",
         "SustainabilityVicZones.DistanceToBorder": "2575.6",
         "SustainabilityVicZones.REBATEZN": "Metropolitan Melbourne",
         "LGA11aAust.Status": "T",
         "SustainabilityVicZones.Status": "T",
         "Status": "T",
         "Status.Code": "",
         "Status.Description": "",
         "user_fields": []
      }
   ]
}

我知道JSON.parse方法,但是我无法访问键的值,因为它们中有一个.

例如:我不能使用Output[0].Status.Code,因为它没有将Status.Code其视为一个整体,它认为CodeStatus在场下。

请帮忙。

4

4 回答 4

1

您可以使用JSON .NET我最喜欢的 JSON 序列化器和反序列化器。

如何使用:



public class Output
{
   [JsonProperty(PropertyName="LGA11aAust.DistanceToBorder")]
   public decimal DistanceToBorder {get; set;}

   //All the other properties

}

用法:

var deserializedObjects = 
JsonConvert.DeserializeObject<List<Output>>(someJsonResult)
于 2012-06-15T06:43:37.460 回答
0

我找到了我的问题的答案。

我们可以直接将参数的名称写在方括号中,而不是使用 (.) 点运算符。

例如:- 参数“Status.Code”的值可以按如下方式访问-

 Output[0]["Status.Code"]  
于 2012-06-20T03:24:05.543 回答
0

这听起来是个坏主意......但我认为如果你用斜杠转义句号,你可以做到:

JSON.parse('{"a\.b":"c"}')

给出:

Object
    a.b: "c"

(在 Chrome 调试器中)

然后,您必须使用引号来访问您的属性,例如:

var x = JSON.parse('{"a\.b":"c"}');
console.log(x["a.b"]);
于 2012-06-15T02:43:07.793 回答
0

检查这个

动态 JSON 解析器

于 2012-06-15T04:56:01.253 回答