6

JSON noobの合計はこちら。オブジェクト内の配列から最初の画像を取得するために、JSON を循環させようとしています。4 時間の作業の後、おそらく何らかの助けが必要であると判断しました。

キーがわかっているオブジェクトから必要なすべての値を引き出すことができますが、一貫性のないキー名を持つデータがいくつかあり、基本的に部分一致を探してから最初の値を引き出すことで反復する必要がありますこれらの結果。

不明な要素の Json 構造は、次のように構成されます。

"custom_fields": {
    "content_0_subheading": [
      "Title text"
    ],
    "content_1_text": [
      "Some text"
    ],
    "content_2_image": [
      [
        "http://staging.livelivelyblog.assemblo.com/wp-content/uploads/2013/09/wellbeing-260x130.jpg",
        260,
        130,
        true
      ]
    ],
    "content_2_caption": [
      ""
        ]
}

この場合、私が求めているのは content_2_image ですが、別のエントリでは、私が知っている限りでは content_20_image である可能性があります (大量のデータが取り出されています)。

キーなどの「_image」で部分一致を探すこれらの未知のキーを循環する最良の方法のアイデアは、非常に高く評価されます。

ありがとう!

4

3 に答える 3

10

部分一致ですべてのフィールドを検索することはできないため、すべてのフィールドを反復処理してから、一致するフィールド名を確認する必要があります。次のようなことを試してください:

var json = {
  "content_0_subheading": [
    "Title text"
  ],
  "content_1_text": [
    "Some text"
  ],
  "content_2_image": [
    [
      "http://staging.livelivelyblog.assemblo.com/wp-content/uploads/2013/09/wellbeing-260x130.jpg",
      260,
      130,
      true
    ]
  ],
  "content_2_caption": [
    ""
  ]
}

for (var key in json) {
    if (json.hasOwnProperty(key)) {
        if (/content_[0-9]+_image/.test(key)) {
            console.log('match!', json[key]); // do stuff here!
        }
    }
}

基本的に、私たちがやっていることは次のとおりです。

1) json オブジェクトのキーをループするfor (var key in json)

2) json にプロパティがあり、不要なキーにアクセスしていないことを確認しますif (json.hasOwnProperty(key))

3) キーが正規表現と一致するかどうかを確認します/content_[0-9]+_image/

3a) 基本的に、が少なくとも 1 桁以上に等しいcontent_ANY NUMBERS_image場合に一致するかどうかをテストします。ANY NUMBERS

4) そのデータを自由に使用してくださいconsole.log(json[key])

お役に立てれば!

于 2013-09-20T07:29:08.310 に答える
4

あなたが使用することができますfor ... in

for (key in object) {
    // check match & do stuff
}
于 2013-09-20T07:21:16.007 に答える
2
var json = JSON.parse(YOUR_JSON_STRING).custom_fields, //Fetch your JSON
    image;                                             //Pre-declare image
for(key in json){                               //Search each key in your object
    if(key.indexOf("image") != -1){             //If the index contains "image"
        image = json[key];                //Then image is set to your image array
        break;                                  //Exit the loop
    }
}
/*
image[0]  //the URL
image[1]  //the width
image[2]  //the height
image[3]  //your boolean
于 2013-09-20T07:29:35.803 に答える