0

我想访问 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

我应该怎么办?!谢谢你们...

4

2 回答 2

4

您必须创建具有属性的模型对象,就像您期望的找到的 json 一样。

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

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

然后使用DeserializeObject<MyModel>版本

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

于 2013-10-06T19:58:12.497 回答
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
}

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

于 2013-10-06T19:59:28.100 回答