2012-10-29 30 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