2014-10-08 135 views
-3

一个JSON对象,我有以下形式解析JSON数组对象为在Javascript

{"Object1":[ 
    {"field1":"label1", "field2":"Name1"}, 
    {"field1":"label2", "field2":"Name2"}, 
    {"field1":"label3", "field2":"Name3"} 
]} 

我想将其转换为

{"label1":"Name1", "label2":"Name2", "label3":"Name3"} 

一个JSON数组对象如何实现这一目标?

+0

你有没有做任何具体的问题? – undefined 2014-10-08 08:51:51

+0

这是你预定义的java格式。 – 2014-10-08 08:55:00

+0

我正在尝试使用ldapjs从LDAP服务器中搜索信息。 JSONArrayObject是JSON.stringify()的结果。我想弄清楚如何使用JSON.parse()/ stringify()或其他任何我不知道的转换为我想要的格式。 – user3701327 2014-10-08 08:59:31

回答

1

为了实现这个 这会为你工作

//分配这个到任何变量

var obj={"Object1":[ 
    {"field1":"label1", "field2":"Name1"}, 
    {"field1":"label2", "field2":"Name2"}, 
    {"field1":"label3", "field2":"Name3"} 
]}; 
//Now take an array 
try{ 
var arr=obj.Object1; 
var newObj={}; 

    for(var i=0;i<arr.length;i++) 
    { 
    newObj[arr[i].field1]=arr[i].field2; 
    } 

    alert(JSON.stringify(newObj)); 

} 
catch(err){alert(err.message); 
} 
1

创建一个空对象,然后遍历Object1对象,并为其中的每个对象添加field1中的值为field2的空数组。

喜欢的东西:

var _obj = {}; 
jQuery.each(obj.Object1, function(k, v) { 
    _obj[v.field1] = v.field2; 
}); 
+0

“创建一个空**对象** ...”? – undefined 2014-10-08 09:01:54

+0

你说得对,对不起。编辑答案。 – Romeo 2014-10-08 09:03:41

+1

由于Object1是一个列表,你可以使用'obj.Object1.forEach(function(v){...})' – parchment 2014-10-08 09:07:35

-1

尝试,纯JavaScript基础的解决方案。

var gList= {"Object1":[ 
    {"field1":"label1", "field2":"Name1"}, 
    {"field1":"label2", "field2":"Name2"}, 
    {"field1":"label3", "field2":"Name3"} 
]}; 

function transform(){ 
    var arr = []; 

    for(var i=0;i<gList.Object1.length;i++){ 
     arr.push("'" + gList.Object1[i].field1 + "':'" + gList.Object1[i].field2 + "'"); 
    } 
    alert(arr); 
} 

输出

'label1':'Name1','label2':'Name2','label3':'Name3 

DEMO

+1

是@undefined,在这个演示中我创建了json的字符串。请检查。认真。 – 2014-10-08 09:08:47

+1

OP已经解析/清除JavaScript结构,您已将有效结构转换为_invalid_ JSON并强制使用'eval'将其转换为JavaScript。不仅这不回答这个问题,而且它也是一个_anti-pattern_。 – undefined 2014-10-08 09:14:06

+1

是的,是否有理由将对象放入字符串中,然后将其重新转换为对象? (这是一个真正的问题:)) – enguerranws 2014-10-08 09:27:44

0

东西在纯JS一个基本for loophttp://jsfiddle.net/1c911ebr/

var object = {"Object1":[ 
    {"field1":"label1", "field2":"Name1"}, 
    {"field1":"label2", "field2":"Name2"}, 
    {"field1":"label3", "field2":"Name3"} 
]}, 
    content = object["Object1"], 
    newObj = {}; 


for(var i=0; i<content.length; i++){  
    newObj[content[i].field1] = content[i].field2;  
} 

返回结果:

{label1: "Name1", label2: "Name2", label3: "Name3"} 
-1

使用此代码。

var json = "{'Object1':["+ 
    "{'field1':'label1', 'field2':'Name1'},"+ 
    "{'field1':'label2', 'field2':'Name2'},"+ 
    "{'field1':'label3', 'field2':'Name3'}"+ 
"]}"; 


function getJSONObj(){ 
    var gList = eval("(" + json + ")"); 
    var jsonObj = {}; 

    for(var i=0;i<gList.Object1.length;i++){ 
     jsonObj[gList.Object1[i].field1 ] = gList.Object1[i].field2; 
    } 
    alert(JSON.stringify(jsonObj)); 
} 


getJSONObj(); 

链接 -http://jsfiddle.net/de5xoe3r/5/

0
var json = {"Object1":[ 
    {"field1":"label1", "field2":"Name1"}, 
    {"field1":"label2", "field2":"Name2"}, 
    {"field1":"label3", "field2":"Name3"} 
]}; 

function getJSONObj() 
{ 
    var gList = eval("(" + json + ")"); 
    var jsonObj = {}; 
    $.each(gList.Object1, function (keyData, valueData) 
    { 
     jsonObj[valueData.field1] = valueData.field2; 
    }); 
} 
getJSONObj(); 

OUTPUT:

{"label1":"Name1", "label2":"Name2", "label3":"Name3"}