使用数字键访问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 }
从那里,您的地址是一个简单的字符串数组,而不是编号的键值对集合。