Reputation: 1278
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.
Upvotes: 2
Views: 216
Reputation: 85578
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']);
}
}
Upvotes: 4
Reputation: 21
There is no need to add backward slashes after ending if every object item. You can separate with comma only.
Upvotes: 0
Reputation: 21
//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>
Upvotes: 2
Reputation: 3680
You can use jQuery to Parse JSON
Also have a look at this SO question Parse JSON in JavaScript?
Upvotes: 0
Reputation: 5268
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!
Upvotes: 0
Reputation: 15099
This is JSON. Use this to parse it. (or any other library you preffer, maybe jQuery)
Upvotes: 3