在javascript中解析json对象以获取键和值

时间:2016-04-21 04:33:18

标签: javascript json object

我有一个对象,需要解析下面的数据

  var data= [{"obj1":"2122"},{"obj2":"123"}]

获取javascript中的键和值。我急于使用:

var obj = JSON.parse(data);
for(var prop in data) {
if(data.hasOwnProperty(prop))
  console.log(prop);
}

在控制台中获取的值是

Object {obj1: "2122"}
Object {obj2: "123"}

但我需要单独访问值而不是对象。如何从该对象中检索它?

6 个答案:

答案 0 :(得分:3)

JSON.parse用于将JSONString解析为Javascript Object。

您不能直接在JavaScript对象上使用它......

无论如何,你的对象是一个数组,所以你可以这样做:

var arr = JSON.parse(data);
arr.forEach(function(elementObject){
    var keys = Object.keys(elementObject);
    keys.forEach(function(key){
      console.log(key + ":"+elementObject[key]);
    })
});

干杯

答案 1 :(得分:1)

在这里,您将获得数组中的值"值"。



var data= [{"obj1":"2122"},{"obj2":"123"}]
 
data = JSON.stringify(data);
 
var values = [];
 
JSON.parse(data, function (key, value) {

    if (typeof(value) != "object") {
        values.push({[key]:value});
	// values.push(value); //if you need a value array
    }  
});




答案 2 :(得分:0)

  

使用Array#map并提取keys中对象的callback。使用value

迭代它们以获得每个密钥的Array#forEach



var data = [{
  "obj1": "2122"
}, {
  "obj2": "123"
}];
var op = data.map(function(item) {
  var keys = Object.keys(item);
  var arr = [];
  keys.forEach(function(key) {
    arr.push(item[key]);
  });
  return arr;
});
console.log(op);

<script src="http://gh-canon.github.io/stack-snippet-console/console.min.js"></script>
&#13;
&#13;
&#13;

答案 3 :(得分:0)

尝试使用此代码使用$.each函数来解析对象..

&#13;
&#13;
 var data= [{"obj1":"2122"},{"obj2":"123"}]
 $.each(data, function(key, val) {
 	 $.each(val, function(k, v) {
		 console.log('key ='+k);
		 console.log('value ='+v);
		 alert('key = '+k+', value = '+v);
	 });
 });
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
&#13;
&#13;

答案 4 :(得分:0)


试试这个..

var obj = JSON.parse('[{"obj1":2122},{"obj2":123}]');
obj.forEach(function(ElementObject){
var keys=Object.keys(ElementObject);
 console.log(keys[0],ElementObject[Object.keys(ElementObject)]); 
}
);

JsFiddle

答案 5 :(得分:-1)

首先:

var data = [{"obj1":"2122"},{"obj2":"123"}]

此行将创建一个数组。不需要:

var obj = JSON.parse(data);

如果您想通过键/值访问,则需要重新构建数据。

var data = [{key:"obj1",value:"2122"},{key:"obj2", value:"123"}];
for( var index in data)
{ 
  var item = data[index]; 
  console.log(item.key);
  console.log(item.value);

}

或者你可以映射:

 var keys = [{
  "obj1": "2122"
}, {
  "obj2": "123"
}];
var op = data.map(function(item) {
  var keys = Object.keys(item);
  var arr = [];
  keys.forEach(function(key) {
    console.log(key);
    arr.push(key);
  });
  return arr;
});
var i=0;
for(var i=0;i<op.length;i++)
{
  console.log(i);
  var pair=data[i];
  console.log(pair);
  var key=op[i][0];
  console.log(key);
  var value=pair[key];
  console.log(value);
}