我想以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
我该怎么办?! 谢谢大家...
答案 0 :(得分:4)
你必须创建具有属性的Model对象,就像你期望找到的json一样。
然后,对于数字属性,您可以使用JsonProperty
属性将该属性命名为数字,例如:
class MyModel {
[JsonProperty("2")]
public string Two {get; set;}
}
然后使用DeserializeObject<MyModel>
版本
这是一个简化的示例,对于您的对象,您必须维护层次结构,并且可能有另一个“address”属性类,并将其用作主模型中的属性类型。
答案 1 :(得分:0)
如果您能够修改JSON,那么这是您最好的选择。你有什么似乎应该在一个数组:
{
"id":3441,
"name":"test",
"address":[
"url.com\/45.jpg",
"url.com\/23.jpg",
"url.com\/65.jpg",
"url.com\/789.jpg"
],
"count":2
}
从那里,你的地址是一个简单的字符串数组,而不是一个带编号的键值对集合。