Hey guys i want to parse this type of string:
{"1":
[
{"OrderItemId":832,"ItemId":995,"Price":0},
{"OrderItemId":833,"ItemId":997,"Price":0},
{"OrderItemId":834,"ItemId":999,"Price":0}
],
"2":
[
{"OrderItemId":835,"ItemId":1008,"Price":0},
{"OrderItemId":836,"ItemId":1057,"Price":0}
]
}
its very important for me, so please guys help me.
Like this, if you want to access the OrderItemId
var test = {"1":
[
{"OrderItemId":832,"ItemId":995,"Price":0},
{"OrderItemId":833,"ItemId":997,"Price":0},
{"OrderItemId":834,"ItemId":999,"Price":0}
],
"2":
[
{"OrderItemId":835,"ItemId":1008,"Price":0},
{"OrderItemId":836,"ItemId":1057,"Price":0}
]
}
alert(test["1"][0]['OrderItemId']);
alert(test["1"][1]['OrderItemId']);
alert(test["1"][2]['OrderItemId']);
alert(test["2"][0]['OrderItemId']);
alert(test["2"][1]['OrderItemId']);
UPDATE, to iterate trough test with unknown lengths
for (var i=0;i<test["1"].length;i++) {
alert(test["1"][i]['OrderItemId']);
}
Here with full automatic enumaration
var number, count = 0;
var en = [];
for(number in test) {
en[count]=number;
count++;
}
for (var r=0;r<en.length;r++) {
alert(en[r]);
for (var i=0;i<test[en[r]].length;i++) {
alert(test[en[r]][i]['OrderItemId']);
}
}
//You can do by this way also :
<script>
var employees = { "accounting" : [ // accounting is an array in employees.
{ "firstName" : "John", // First element
"lastName" : "Doe",
"age" : 23 },
{ "firstName" : "Mary", // Second Element
"lastName" : "Smith",
"age" : 32 }
], // End "accounting" array.
"sales" : [ // Sales is another array in employees.
{ "firstName" : "Sally", // First Element
"lastName" : "Green",
"age" : 27 },
{ "firstName" : "Jim", // Second Element
"lastName" : "Galley",
"age" : 41 }
] // End "sales" Array.
} // End Employees
var output="<ul>";
for (var i in employees.accounting) {
output+="<li>" + employees.accounting[i].firstName + " " + employees.accounting[i].lastName + "--" + employees.accounting[i].age+"</li>";
}
output+="</ul>";
var output1="<ul>";
for (var j in employees.sales) {
output1+="<li>" + employees.sales[j].firstName + " " + employees.sales[j].lastName + "--" + employees.sales[j].age+"</li>";
}
output+="</ul>";
alert(output1);
</script>
The problem might have been due to line ending.
Here is a working[tested in chrome dev console] code:
var jsonStr = '{"1":\
[\
{"OrderItemId":832,"ItemId":995,"Price":0},\
{"OrderItemId":833,"ItemId":997,"Price":0},\
{"OrderItemId":834,"ItemId":999,"Price":0}\
],\
"2":\
[\
{"OrderItemId":835,"ItemId":1008,"Price":0},\
{"OrderItemId":836,"ItemId":1057,"Price":0}\
]\
}';
var obj = JSON.parse(jsonStr); // works!
You can use jQuery to Parse JSON
Also have a look at this SO question Parse JSON in JavaScript?
There is no need to add backward slashes after ending if every object item. You can separate with comma only.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.