2012-10-29 47 views
-1

當試圖將某些Json數據轉換爲特定格式時,遇到一些問題。Json饋入javascript數組

基本上,我需要這個JSON數據:

{ 
query: [ ], 
products: 
[ 

{ 
title: "title 1", 
price: "6.00", 
magazine: "magazine name 1", 
image: "/p/c/pc_90_cover.jpg", 
type: "Magazine", 
market: "Technology", 
zinio: "http:www.zinio.com", 
newsstand: "http://www.link1.php" 
}, 


{ 
title: "title 2", 
price: "6.00", 
magazine: "magazine name 2", 
image: "/p/c/pc_90_cover.jpg", 
type: "Magazine", 
market: "Technology", 
zinio: "http:www.zinio.com", 
newsstand: "http://www.link2.php" 
}, 


{ 
title: "title 3", 
price: "6.00", 
magazine: "magazine name 3", 
image: "/p/c/pc_90_cover.jpg", 
type: "Magazine", 
market: "Technology", 
zinio: "http:www.zinio.com", 
newsstand: "http://www.link3.php" 
} 
] 

要進入這個JavaScript數組:

var arrProducts = [ 
          title: "{{ product.title }}", 
          url: "{{ product.url }}", 
          label: "{{ product.title }}", 
          magazine: "{{ product.magazine }}", 
          image: "{{ product.imageThumb }}", 
          newsstand: "{{ product.newsstand }}", 
          kindle: "{{ product.kindle }}", 
          barnesnoble: "{{ product.barnesnoble }}", 
          zinio: "{{ product.zinio }}", 
          kobo: "{{ product.kobo }}", 
          waterstones: "{{ product.waterstones }}", 
          type: "{{ product.type }}", 
         }, 
      ]; 

我已經嘗試使用:

var allProducts = $.get("http://localhost:8888/web/app_dev.php/api/v1/search/search.json, function(data) { 

var productsArray = data.products; 

console.log(productsArray); 

}); 

但是這種方法不建我需要的格式的數組。 Console.log輸出一堆對象。也許每個循環都可能是一個解決方案? - 任何幫助表示讚賞,我的Javascript不是那麼棒!

+0

您想要的結果有語法錯誤。你需要一系列hashmaps? –

+1

您需要解析生成的數據進行轉換。成功函數的第一行應該是'data = JSON.parse(data);' – Archer

+0

嘗試添加,但我得到以下錯誤:Uncaught SyntaxError:意外的令牌o:8888/great-digital-mags/web/app .php /:168 (匿名函數):8888/great-digital-mags/web/app.php /:168 o jquery.min.js:2 p.fireWith jquery.min.js:2 w jquery .min.js:4 d – richelliot

回答

2

使用http://jsonlint.com來驗證你的json。如果它不通過,它也不會通過ajax。您的示例缺少對象鍵和起始大括號上的雙引號,並且有額外的逗號,並且您的文件不應包含由ajax使用的var arrProducts =

但是,如果您在頁面中放置此文件的腳本標記,初始頁面加載。那麼需要var arrProducts =,對象鍵上的引號不是。然後,而不是阿賈克斯則只需遍歷所有的變量arrProducts

編輯:

要遍歷第一樣品

$.getJSON(url, function(data) { 
    var productsArray = data.products; 
    $.each( productsArray, function(i, item){ 

     console.log('Title is '+ item.title) 

    }) 

}) 

有提供了有關如何解析JSON和循環豐富的信息在對象和數組上...你嘗試搜索嗎?

+0

我給出的例子中包含的Json確實有錯誤,但是Json im的工作確實無誤。它只是在我給的例子中被錯誤地複製過... opps!那麼我怎麼會循環arrproducts來構建一個數組來匹配我的例子中的那個呢? – richelliot

+0

已編輯的解決方案 – charlietfl

+0

此解決方案確實有效,但我仍然將原始問題的數據作爲對象。我如何將其轉換爲字符串數組? – richelliot