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# での私のコード: ( HrmlResultis my 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のように、プロパティを使用してModelオブジェクトを作成する必要があります。

次に、number プロパティの場合、JsonPropertyattribute を使用してプロパティに number という名前を付けることができます。次に例を示します。

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 に答える