使用数字键访问JSON字段

时间:2013-10-06 19:48:12

标签: c# 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

我该怎么办?! 谢谢大家...

2 个答案:

答案 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
}

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