2014-10-08 124 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"}