-1

我在尝试将一些 Json 数据转换为特定格式时遇到了一些问题。

我基本上需要这个 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 输出一堆对象。也许 for each 循环可能是一个解决方案?- 任何帮助表示赞赏,我的 Javascript 不是那么好!

4

1 回答 1

1

使用http://jsonlint.com来验证您的 json。如果它不会通过那里,它也不会通过ajax。您的示例在对象键和起始大括号上缺少双引号,并且有额外的逗号,并且您的文件var arrProducts =在被 ajax 使用时不应包含

但是,如果在初始页面加载期间在页面中放置带有此文件的脚本标记,则会有所不同。然后var arrProducts =需要,对象键上的引号不是。然后,您可以简单地循环变量而不是 ajaxarrProducts

编辑:

循环第一个样本

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

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

    })

})

有很多关于如何解析 json 和循环对象和数组的信息……你试过搜索吗?

于 2012-10-29T13:22:17.673 回答