使用数字键访问JSON字段

我想访问JSON中的某些图片地址,但字段名称是一个数字,在c#中,数字不是变量的有效名称…

我的JSON:

{ "id":3441, "name":"test", "address": { "1":"url.com\/45.jpg", "2":"url.com\/23.jpg", "3":"url.com\/65.jpg", "4":"url.com\/789.jpg", }, "count":2 } 

我在C#中的代码:( HrmlResult是我的JSON)

 dynamic stuff1 = Newtonsoft.Json.JsonConvert.DeserializeObject(HtmlResult); string address= stuff1.address; //It Works string allPics = stuff1.pic; //It Works firstPicTextBox.Text= stuff1.pic.1; //compiler Error secondPicTextBox.Text = stuff1.pic[2]; //runtime Error 

我该怎么办?! 谢谢你们…

您必须使用属性创建Model对象,就像您期望的找到的json一样。

然后,对于数字属性,您可以使用JsonProperty属性JsonProperty属性命名为number,例如:

 class MyModel { [JsonProperty("2")] public string Two {get; set;} } 

然后使用DeserializeObject版本

这是一个简化的示例,对于您的对象,您必须维护层次结构,并且可能具有另一个“address”属性类,并将其用作主模型中的属性类型。

如果你能修改JSON,这是你最好的选择。 你有什么似乎应该在一个数组:

 { "id":3441, "name":"test", "address":[ "url.com\/45.jpg", "url.com\/23.jpg", "url.com\/65.jpg", "url.com\/789.jpg" ], "count":2 } 

从那里,您的地址是一个简单的字符串数组,而不是编号的键值对集合。