I have PHP outputting a JSON multidimensional array as follows:
{"rates":[{"meter":"30","rate":"0.15060","ppd":"10.000"}]}
However, I keep getting an error when trying to decode it on the JavaSCript side of things.
Uncaught TypeError: Cannot read property 'length' of null
Here is the code below for the jQuery side of things:
success: function (result) {
console.log(result);
$.each($.parseJSON(result), function (item, value) {
if (item == "rates") {
$.each($.parseJSON(value), function (i, object) {
console.log(i + "=" + object);
});
}
The 1st console log gives me the output I mentioned at the top, but for some reason i am not able to access the array as I thought I would.
Any help is greatly appreciated :)
3 Answers 3
You don't need to call parseJSON again on value. It's already an object
var result='{"rates":[{"meter":"30","rate":"0.15060","ppd":"10.000"}]}';
console.log(result);
$.each($.parseJSON(result), function (item, value) {
if (item == "rates") {
$.each(value, function (i, object) {
$.each(object, function (subI, subObject) {
console.log(subI + "=" + subObject);
});
});
}
});
Also, incase you were wondering the error was happening because you were trying to call parseJSON on an object and parseJSON expects a string so it was returning null to the each function which was then trying to do a for loop based on null.length
6 Comments
[object Object]. You could do console.log(i, object) instead.As you only want the content of one property, you don't need to loop through all the properties, so you don't need the nested loops. Just get the array and loop through it:
$.each($.parseJSON(result).rates, function (i, object) {
console.log(i + "=" + object);
});
If you are using a method specifically for getting JSON, or if the content type is correctly set on the response, you shouldn't even parse the result, It's already parsed before the callback method is called:
$.each(result.rates, function (i, object) {
console.log(i + "=" + object);
});
Comments
The program shows how to read json and store data into textbox
$(document).ready(function(){
$.getJSON("Test.json",function(data){
$.each(data,function(key,value){
alert(data[key].attrib1name);
alert(data[key].attrib2name);
$('input').val(data[key].enterpriseName);
activities=data[key].activities;
console.log(value);
});
});
});
Comments
Explore related questions
See similar questions with these tags.
$.eacheven executed?Uncaught SyntaxError: Unexpected token oin the secondparseJSONcommand.. can't explain the error you are getting