2016-04-27 23 views
1

我有一个返回该数组或对象在JSONjQuery的解析多维数组与子阵列

{"orderHead":["51817","frode","","","els"], 
"orderLines":[{"VareNr":"07,1437","Produkt":"Black Glue","Antall":"6","Pris":"239","Rabatt":"0%"},{"VareNr":"07,1435","Produkt":"Grey Glue","Antall":"8","Pris":"239","Rabatt":"0%"}], 
"orderSum":[{"doc":"26042016_4.oln","knr":"51817","firma":"Tolga Co","oldV":1,"oldS":2868,"newV":0,"newS":0,"newSc":2}]} 

据我可以告诉有三个主要职位的API:

  • orderHead
  • orderLines
  • orderSum

每个包含它们自己的子数组。 问题是我无法从中检索任何数据,没有或没有$ .parseJSON();

我试过$ .grep和$ .each。

我必须结合几个“工具”才能从这个对象/数组中读取吗? 对不起,我非常非常noob问题:)

回答

1

您可以用JSON.parse方法

考虑下面的JSON

{ 
    "orderHead": [ 
     "51817", 
     "frode", 
     "", 
     "", 
     "els" 
    ], 
    "orderLines": [ 
     { 
      "VareNr": "07,1437", 
      "Produkt": "Black Glue", 
      "Antall": "6", 
      "Pris": "239", 
      "Rabatt": "0%" 
     }, 
     { 
      "VareNr": "07,1435", 
      "Produkt": "Grey Glue", 
      "Antall": "8", 
      "Pris": "239", 
      "Rabatt": "0%" 
     } 
    ], 
    "orderSum": [ 
     { 
      "doc": "26042016_4.oln", 
      "knr": "51817", 
      "firma": "Tolga Co", 
      "oldV": 1, 
      "oldS": 2868, 
      "newV": 0, 
      "newS": 0, 
      "newSc": 2 
     } 
    ] 
} 

您可以访问像这样的数值解析JSON:

var json = '{"orderHead":["51817","frode","","","els"],\ 
"orderLines":[{"VareNr":"07,1437","Produkt":"Black\ Glue","Antall":"6","Pris":"239","Rabatt":"0%"},{"VareNr":"07,1435","Produkt":"Grey\ Glue","Antall":"8","Pris":"239","Rabatt":"0%"}],\ 
"orderSum":[{"doc":"26042016_4.oln","knr":"51817","firma":"Tolga\ Co","oldV":1,"oldS":2868,"newV":0,"newS":0,"newSc":2}]}'; 

var parsed = JSON.parse(json); 

console.log(parsed.orderHead); 

for (line of parsed.orderLines) { 
    console.log(line.VareNr, line.Produkt, line.Pris); 
} 

返回:

[ “51817”, “弗罗德”, “”, “”, “ELS”]
07,1437黑胶239
07,1435灰胶239

您也可以访问/迭代在像这样的结果:

// read order sum values 
console.log(parsed.orderSum[0].doc, parsed.orderSum[0].knr, parsed.orderSum[0].firma); 

// iterate over the order lines 
for(line in parsed.orderLines) { 
    console.log(parsed.orderLines[line].Produkt); 
} 

将返回:

黑胶
VM132:60灰色胶

+0

谢谢你这是工作。但是,使用for(line of parsed.orderLines){...}时,我的编辑器给我一个语法错误。有没有其他命令可以提供相同的结果? – XanderMan

+0

是的,循环数据的方式有很多种。我会再添加一个例子。 – mezmi

+1

再次感谢您的帮助。我终于得到它使用$ .each也工作:) – XanderMan