2016-05-23 27 views
0

我正在用AngularJS開發一個簡單的應用程序,並且我想要動態獲取價格的值,所以我想對另一個JSON進行JSON調用,我不確定這是否可能!JSON如何調用另一個JSON

這是我data.json:

[{ 
     "name": "city A", 
     "elements": [{ 
      "id": "c01", 
      "name": "name1", 
      "price": "15", 
      "qte": "10" 
     }, { 
      "id": "c02", 
      "name": "name2", 
      "price": "18", 
      "qte": "11" 
     }, { 
      "id": "c03", 
      "name": "name3", 
      "price": "11", 
      "qte": "14" 
     }], 
     "subsities": [{ 
      "name": "sub A1", 
      "elements": [{ 
      "id": "sub01", 
      "name": "nameSub1", 
      "price": "1", 
      "qte": "14" 
      }, { 
      "id": "sub02", 
      "name": "nameSub2", 
      "price": "8", 
      "qte": "13" 
      }, { 
      "id": "sub03", 
      "name": "nameSub3", 
      "price": "1", 
      "qte": "14" 
      }] 
     }, { 
      "name": "sub A2", 
      "elements": [{ 
      "id": "ssub01", 
      "name": "nameSsub1", 
      "price": "1", 
      "qte": "7" 
      }, { 
      "id": "ssub02", 
      "name": "nameSsub2", 
      "price": "8", 
      "qte": "1" 
      }, { 
      "id": "ssub03", 
      "name": "nameSsub3", 
      "price": "4", 
      "qte": "19" 
      }] 
     }, { 
      "name": "sub A3", 
      "elements": [{ 
      "id": "sssub01", 
      "name": "nameSssub1", 
      "price": "1", 
      "qte": "11" 
      }, { 
      "id": "sssub02", 
      "name": "nameSssub2", 
      "price": "2", 
      "qte": "15" 
      }, { 
      "id": "sssub03", 
      "name": "nameSssub3", 
      "price": "1", 
      "qte": "15" 
      }] 
     }] 
     }, { 
     "name": "city B", 
     "elements": [{ 
      "id": "cc01", 
      "name": "name11", 
      "price": "10", 
      "qte": "11" 
     }, { 
      "id": "cc02", 
      "name": "name22", 
      "price": "14", 
      "qte": "19" 
     }, { 
      "id": "cc03", 
      "name": "name33", 
      "price": "11", 
      "qte": "18" 
     }] 
     }, { 
     "name": "city C", 
     "elements": [{ 
      "id": "ccc01", 
      "name": "name111", 
      "price": "19", 
      "qte": "12" 
     }, { 
      "id": "ccc02", 
      "name": "name222", 
      "price": "18", 
      "qte": "17" 
     }, { 
      "id": "ccc03", 
      "name": "name333", 
      "price": "10", 
      "qte": "5" 
     }] 
     }] 

,我想從這個網址得到價格的價值:url json

我想要做的事,如:

[{ 
      "name": "city A", 
      "elements": [{ 
       "id": "c01", 
       "name": "name1", 
       "price": "prix_diesel",/*prix_diesel is an attribute in json url I want to extract its value here.*/ 
       "qte": "10" 
      }, { 
       "id": "c02", 
       "name": "name2", 
       "price": "18", 
       "qte": "11" 
      }, { 
       "id": "c03", 
       "name": "name3", 
       "price": "11", 
       "qte": "14" 
      }], 
      "subsities": [{ 
       "name": "sub A1", 
       "elements": [{ 
       "id": "sub01", 
       "name": "nameSub1", 
       "price": "1", 
       "qte": "14" 
       }, { 
       "id": "sub02", 
       "name": "nameSub2", 
       "price": "8", 
       "qte": "13" 
       }, { 
       "id": "sub03", 
       "name": "nameSub3", 
       "price": "1", 
       "qte": "14" 
       }] 
      }, { 
       "name": "sub A2", 
       "elements": [{ 
       "id": "ssub01", 
       "name": "nameSsub1", 
       "price": "1", 
       "qte": "7" 
       }, { 
       "id": "ssub02", 
       "name": "nameSsub2", 
       "price": "8", 
       "qte": "1" 
       }, { 
       "id": "ssub03", 
       "name": "nameSsub3", 
       "price": "4", 
       "qte": "19" 
       }] 
      }, { 
       "name": "sub A3", 
       "elements": [{ 
       "id": "sssub01", 
       "name": "nameSssub1", 
       "price": "1", 
       "qte": "11" 
       }, { 
       "id": "sssub02", 
       "name": "nameSssub2", 
       "price": "2", 
       "qte": "15" 
       }, { 
       "id": "sssub03", 
       "name": "nameSssub3", 
       "price": "1", 
       "qte": "15" 
       }] 
      }] 
      } 
      ...... 
      ...... 
      ] 

我把它設置在我的plunkr中:plunkr

我搜索和我發現如果我想從URL獲取數據,我需要一個XMLHttpRequest(使用Angular,我可以使用$ http.get)。但是在這裏我使用的是調用另一個JSON文件的JSON,所以我該如何解決這個問題?請你有任何想法!

+0

不,這是不可能的。當你分配給一個變量,你可以做 var price = {「prix」:{「prix_diesel」:「8.25」,「prix_essence」:「10.14」,「prix_aditive」:「8.80」}}; var list = {...,「price」:parseFloat(price.prix_diesel)}' – mplungjan

回答

3

你不能。 JSON不是一種編程語言,而是數據傳輸的開放標準。

但是,您可以做的是從第一個文件中的第二個文件引用一個對象。舉個例子:

[{ 
    "name": "city A", 
    "elements": [{ 
     "id": "c01", 
     "name": "name1", 
     "price": "prix_diesel", 
     "qte": "10" 
    }] 
    // Simplified 
}] 

從你的URL的JSON:

{ 
    "prix": { 
     "prix_diesel": "8.25", 
     "prix_essence": "10.14", 
     "prix_aditive": "8.80" 
    } 
} 

現在寫一個JS功能,發現您的第一個JSON文件prix_diesel參考,並期待在JSON該鍵的值來自網址8.25

一個例子是與此類似:

for (var element of myJson.elements) { 
    var reference = element.price; // prix_diesel 
    var referenceValue = jsonFromUrl.prix[reference]; // 8.25 
} 

這將查找基於其參考的元素,以所有的價格(這實際上是在你的第二個JSON關鍵的只是名字)。


一個方面,我注意到你的URL的JSON應該被登錄功能保護。但是,就像您在自己的帖子中演示的那樣,使用正確的端點,無需登錄即可輕鬆訪問數據。如果這是您擁有的產品,並且您不希望此數據公開可用,那麼我建議尋找一種防止未登錄的用戶請求數據的解決方案。看看passportjs.org

+0

感謝您的有用答案,請您可以將這個設置在一個蹲點 – Abderrahim

0

我叉你plunker加載第二JSON,你可以得到它像後(改變你的data.json太)

(代碼是一樣的東西「prix_diesel」,它是在更新JSON)

function getPrice(code){ 
     return priceData.prix[code]; 
     } 

updated