My controller has a method that is returning string representation of a jsonArray as
jsonArray.toString()
Now following is the ajax method
function loadPropertyFile(url) {
$.ajax({
type: "GET",
url: url,
dataType: "text",
success: function(response){
var obj = jQuery.parseJSON(response);
alert(obj);
}
});
}
Here the variable obj after parsing es out to be
"[{"portal.home":"Home"},{"displaytag.tracking.id":"Item ID"},{"displaytag.tracking.itemName":"Item Name"},{"displaytag.tracking.itemType":"Type"}]"
Now I want to access the values from the keys in js
ie. I want to access the value of key "displaytag.tracking.id"
Problem is when I am doing console.log(obj[0]["portal.home"]); It is giving me error TypeError: obj[0] is undefined
What shall I do ?
My controller has a method that is returning string representation of a jsonArray as
jsonArray.toString()
Now following is the ajax method
function loadPropertyFile(url) {
$.ajax({
type: "GET",
url: url,
dataType: "text",
success: function(response){
var obj = jQuery.parseJSON(response);
alert(obj);
}
});
}
Here the variable obj after parsing es out to be
"[{"portal.home":"Home"},{"displaytag.tracking.id":"Item ID"},{"displaytag.tracking.itemName":"Item Name"},{"displaytag.tracking.itemType":"Type"}]"
Now I want to access the values from the keys in js
ie. I want to access the value of key "displaytag.tracking.id"
Problem is when I am doing console.log(obj[0]["portal.home"]); It is giving me error TypeError: obj[0] is undefined
What shall I do ?
Share Improve this question edited Jan 25, 2013 at 10:14 Bhuvan asked Jan 25, 2013 at 9:39 BhuvanBhuvan 2,22911 gold badges33 silver badges48 bronze badges 4- Is it a string, or do you have an actual javascript object. And this should be trivial to figure out either way ? – adeneo Commented Jan 25, 2013 at 9:40
- Trivial question, and not clearly formed. – César García Tapia Commented Jan 25, 2013 at 9:43
- Question edited. Please see – Bhuvan Commented Jan 25, 2013 at 10:00
-
Your json string should be like this
'
[{"portal.home":"Home"},{"displaytag.tracking.id":"Item ID"},{"displaytag.tracking.itemName":"Item Name"},{"displaytag.tracking.itemType":"Type"}]'
remove the double quotes at front and at end use single quotes – YogeshWaran Commented Jan 25, 2013 at 10:09
4 Answers
Reset to default 8First you need to parse the JSON string into JavaScript object, and then access the required property:
var obj = JSON.parse(json);
console.log(obj[0]["portal.home"]);
In older browsers which do not have native JSON support, you should use something like Crockford's json2.js, which will give you one; please don't use eval() on JSON, as it can lead to pretty bad things all around.
Use $.parseJSON
(or JSON.parse in modern browsers) to convert your string into a Javascript object:
var json = '[{"portal.home":"Home"},{"displaytag.tracking.id":"Item ID"},{"displaytag.tracking.itemName":"Item Name"},{"displaytag.tracking.itemType":"Type"}]';
var object = $.parseJSON(json);
In your case your JSON string will create an array, so you will need to get the object at the correct index:
var portalHomeValue = object[0]["portal.home"];
In case you have the JSON directly in your javascript source (which I don't assume, but I'm adding this for others), you can just remove the quotes, and javascript creates an object based on it:
var obj = [{"portal.home":"Home"},{"displaytag.tracking.id":"Item ID"},{"displaytag.tracking.itemName":"Item Name"},{"displaytag.tracking.itemType":"Type"}];
console.log(obj[0]["portal.home"]);
You can directly access by following
var data = JSON.parse('[{"Item_Number":"M71118LHB","Description":"MENS ONESIE"}]');
var desc = data[0].Description;
console.log(desc);