-1

重複の可能性:
ネストされたデータ構造/ JSONがありますが、特定の値にアクセスするにはどうすればよいですか?

以下の形式のJSONデータがあります。「NonVeg」でspecialDealがtrueになっている店舗に対応する店舗名を取得する必要があります。(注:specialDealがtrueとして設定されているのは1つのストアのみです)どのように取得しますか。助けてください。事前に感謝します..私はちょうどJavaを学んでいるので私を助けてください。

 {"Food":
  {
   "Veg":
    {
        "amtSpent":"", "shortDesc":"", "longDesc":"", "excTxt":"", 
        "discntType":"", "Store":"", "StoreType":"", "Fund":"",
        "FundDetails":[
                {"status":"", "discntVal":"", "FundVal":"", "FundBal":""},
                {"status":"", "discntVal":"", "FundVal":"", "FundBal":""}
        ]
     },
   "Non Veg":
        {
        "chicken":
                [
                {
                        "amtSpent":"", "shortDesc":"", "longDesc":"", "excTxt":"",
                        "discntType":"", "Store":"", "StoreType":"", "Fund":"",
                        "specialDeal":"", "promoStatus":"",
                        "FundDetails":[
                                {"status":"", "discntVal":"", "FundVal":"", "FundBal":""},
                                {"status":"", "discntVal":"", "FundVal":"", "FundBal":""}
                        ]
     },
     {
                        "amtSpent":"", "shortDesc":"", "longDesc":"", "excTxt":"",
                        "discntType":"", "Store":"", "StoreType":"", "Fund":"",
                        "specialDeal":"", "promoStatus":"",
                        "FundDetails":[
                                {"status":"", "discntVal":"", "FundVal":"", "FundBal":""},
                                {"status":"", "discntVal":"", "FundVal":"", "FundBal":""}
                        ]
     }
    ],
        "fish":
                [
                {
                        "amtSpent":"", "shortDesc":"", "longDesc":"", "excTxt":"",
                        "discntType":"", "Store":"", "StoreType":"", "Fund":"",
                        "specialDeal":"", "promoStatus":"",
                        "FundDetails":[
                                {"status":"", "discntVal":"", "FundVal":"", "FundBal":""},
                                {"status":"", "discntVal":"", "FundVal":"", "FundBal":""}
                        ]
                },
                {
                        "amtSpent":"", "shortDesc":"", "longDesc":"", "excTxt":"",
                        "discntType":"", "Store":"", "StoreType":"", "Fund":"",
                        "specialDeal":"", "promoStatus":"",
                        "FundDetails":[
                                {"status":"", "discntVal":"", "FundVal":"", "FundBal":""},
                                {"status":"", "discntVal":"", "FundVal":"", "FundBal":""}
                        ]
                }
                ],
        "egg":
                [
                {
                        "amtSpent":"", "shortDesc":"", "longDesc":"", "excTxt":"",
                        "discntType":"", "Store":"", "StoreType":"", "Fund":"",
                        "specialDeal":"", "promoStatus":"",
                        "discntVal":"", "FundVal":"", "FundBal":""
                },
                {
                        "amtSpent":"", "shortDesc":"", "longDesc":"", "excTxt":"",
                        "discntType":"", "Store":"", "StoreType":"", "Fund":"",
                        "specialDeal":"", "promoStatus":"",
                        "discntVal":"", "FundVal":"", "FundBal":""
                }
                         ]
        },
"isMember":"Y",
"orderId":""

}

4

2 に答える 2

0

OK、JSONのどこかに中括弧がありません-私はそれらが最後にあると思いました。

プロセスは次のとおりです。

// s_json is the string form of your json response
var s_json='{"Food":  {   "Veg":    {        "amtSpent":"", "shortDesc":"", "longDesc":"", "excTxt":"",         "discntType":"", "Store":"", "StoreType":"", "Fund":"",        "FundDetails":[                {"status":"", "discntVal":"", "FundVal":"", "FundBal":""},                {"status":"", "discntVal":"", "FundVal":"", "FundBal":""}        ]     },   "Non Veg":        {        "chicken":                [                {                        "amtSpent":"", "shortDesc":"", "longDesc":"", "excTxt":"",                        "discntType":"", "Store":"result", "StoreType":"", "Fund":"",                        "specialDeal":"true", "promoStatus":"",                        "FundDetails":[                                {"status":"", "discntVal":"", "FundVal":"", "FundBal":""},                                {"status":"", "discntVal":"", "FundVal":"", "FundBal":""}                        ]     },     {                        "amtSpent":"", "shortDesc":"", "longDesc":"", "excTxt":"",                        "discntType":"", "Store":"", "StoreType":"", "Fund":"",                        "specialDeal":"", "promoStatus":"",                        "FundDetails":[                                {"status":"", "discntVal":"", "FundVal":"", "FundBal":""},                                {"status":"", "discntVal":"", "FundVal":"", "FundBal":""}                        ]     }    ],        "fish":                [                {                        "amtSpent":"", "shortDesc":"", "longDesc":"", "excTxt":"",                        "discntType":"", "Store":"", "StoreType":"", "Fund":"",                        "specialDeal":"", "promoStatus":"",                        "FundDetails":[                                {"status":"", "discntVal":"", "FundVal":"", "FundBal":""},                                {"status":"", "discntVal":"", "FundVal":"", "FundBal":""}                        ]                },                {                        "amtSpent":"", "shortDesc":"", "longDesc":"", "excTxt":"",                        "discntType":"", "Store":"", "StoreType":"", "Fund":"",                        "specialDeal":"", "promoStatus":"",                        "FundDetails":[                                {"status":"", "discntVal":"", "FundVal":"", "FundBal":""},                                {"status":"", "discntVal":"", "FundVal":"", "FundBal":""}                        ]                }                ],        "egg":                [                {                        "amtSpent":"", "shortDesc":"", "longDesc":"", "excTxt":"",                        "discntType":"", "Store":"", "StoreType":"", "Fund":"",                        "specialDeal":"", "promoStatus":"",                        "discntVal":"", "FundVal":"", "FundBal":""                },                {                        "amtSpent":"", "shortDesc":"", "longDesc":"", "excTxt":"",                        "discntType":"", "Store":"", "StoreType":"", "Fund":"",                        "specialDeal":"", "promoStatus":"",                        "discntVal":"", "FundVal":"", "FundBal":""                }               ]        },"isMember":"Y","orderId":""}}';
// We use a json parser to turn the string into an object, o_json. In firefox, instead of using jQuery you could use JSON.parse(s_json). Other parsers are available in other frameworks/browsers
var o_json=jQuery.parseJSON(s_json);
// Initialize an empty string for the result
var result=""
// look in the o_json object for the food object property, then grab it's object property with the key "Non Veg". loop through each of the enumerable properties of this object, calling each one o_food
for each (o_food in o_json.Food["Non Veg"]) {
    // Loop through all the elements of the array o_food
    for (var i=0;i<o_food.length;i++) {
        // Does this element of the array have a property, specialDeal, whose value is "true"? If so, check the same element for a property called Store, and use it's value for the value of result
        if (o_food[i].specialDeal=="true") result=o_food[i].Store;
    }
}
// Alert the result
alert(result);

結果が見つかるように、jsonを少し変更したことに気付くでしょう。フレームワーク(jQueryなど)または一部のブラウザー(ffなど)で使用可能なネイティブjsonパーサーを使用すると、jsonを通常のオブジェクトであるかのように扱うことができます。

于 2012-11-23T07:02:24.400 に答える
0

あなたはこれを試すことができます:

var nonVeg = jsonData.Food['Non Veg']; // jsonData is json data which you have given above
for(var key in nonVeg) {
  for(var i=0; i<nonVeg[key].length; i++) { 
     var storeObj = nonVeg[key][i];
     if(storeObj['specialDeal']== 'true'){ 
        console.log(storeObj['Store']);
     }
  }
}

JSONの非Veg部分のみに関心があるため、それをいくつかの変数に格納できます。var nonVeg = jsonData.Food['Non Veg']; これで、nonVegをオブジェクトとしてのみ言うことができます。このオブジェクトにはさらにいくつかのオブジェクトがあるので、forループを使用して各オブジェクトを反復処理し、それを。という変数に格納しますstoreObj。storeObjには多くのキー値パラメーターがあるstoreObjため、forループでそれぞれを反復処理できます。最後に、specialDealプロパティの値がtrue?かどうかを確認します。はいの場合、console.logその「ストア」プロパティ、つまり storeObj['Store']

于 2012-11-23T07:05:17.437 に答える