2012-01-26 76 views
1

我想將json formated輸出轉換爲另一個。 我該怎麼做?將JSON對象轉換爲另一個 - 格式化

實施例: 舊JSON

"data": 
[ 
    { 
     "id" : "e49e183e-9325-4e62-8eda-7e63fb7cdbbd", 
     "name" : "test" 
    }, 
    { 
     "id" : "ac310894-d808-447b-a189-d07edb7f6dd7", 
     "name" : "test2" 
    } 
] 

新的Json,我想不與托架括號只有這樣

"aaData": 
[ 
    [ 
     "e49e183e-9325-4e62-8eda-7e63fb7cdbbd","test" 
    ], 
    [ 
     "ac310894-d808-447b-a189-d07edb7f6dd7","test2" 
    ] 
] 
+0

這並不完全正確 - 應該在舊格式和新格式中使用一對花括號嗎? – nnnnnn

+0

我需要這個括號中的第二個 –

+0

第二個格式不是有效的JSON,所以你不能使用Javascript JSOn庫。你可以'JSON.stringify()'你的JSON對象,然後做一個字符串替換來替換所有'{'''''''。 – xbonez

回答

8

你可以只通過項目環和他們推到一個新的對象:

var len = old.data.length, 
    newData = {aaData:[]}, 
    i; 

for (i=0; i < len; i+=1) { 
    newData.aaData.push([ old.data[ i ].id, old.data[ i ].name]); 
} 

例如:http://jsfiddle.net/q2Jzb/1/

你可能通過這些以數據表(如您使用的名稱aaData),注那DataTables takes an object as the configuration,它不同於JSON。

1

嘗試使用以下;

function format(oldFormat) { 
    var newFormat = []; 

    oldFormat = oldFormat.data; 

    for (var i=0;i<oldFormat.length;i++) { 
     newFormat.push([oldFormat[i].id], oldFormat[i].name); 
    }; 

    return { 
     aaData: newFormat 
    }; 
} 

然後你可以使用函數調用;

var newStuff = format(varPointingToOldStuff); 

該函數期望接收JavaScript對象而不是JSON,並返回一個JavaScript對象而不是JSON。 Make sure you understand the differences between a JSON (string) and a JavaScript object

您可以使用JSON.parse(yourJsonString)將JSON字符串轉換爲JavaScript對象,並且可以使用JSON.stringify(yourJavaScriptObject)將JavaScript對象轉換爲JSON字符串。

1

你可以只是做它作爲一個字符串替換:

newJSON = oldJSON.replace(/"id" : |"name" : /g, "") 
       .replace(/{/g, "[").replace(/}/g, "]"); 

但是,這是一種不可靠的。另一種方法是解析JSON,然後處理由此產生的對象,然後把結果返回到JSON:

var oldData = JSON.parse(oldJSON)["data"], 
    aaData = [], 
    arr, 
    newJSON, 
    i, k; 

for (i = 0; i < data.length; i++) { 
    arr = []; 
    for (k in data[i]) 
     arr.push(data[i][k]); 
    aaData.push(arr); 
} 

newJSON = JSON.stringify({ "aaData" : aaData }); 

哪裏oldJSON是從你的問題的舊格式的字符串。 (我剛剛繞過每個數組項目中的屬性,而不是假設它們始終具有「id」和「name」屬性)。

1

您可以使用JavaScript將輸入數據轉換爲新的對象形式然後使用JSON JavaScript庫(JSON.stringify函數,請參閱更多此處的http://www.json.org/js.html)將新創建的對象轉換爲適當的JSON。以下代碼使用jQuery和JSON庫來解決您的問題。 jQuery的使用純粹是可選的,還有其他庫可以用來製作JSON。

<pre id="code"></pre> 

<script type="text/javascript"> 
    $(document).ready(function() { 
     var old = { "data": 
      [ 
       { 
        "id": "e49e183e-9325-4e62-8eda-7e63fb7cdbbd", 
        "name": "test" 
       }, 
       { 
        "id": "ac310894-d808-447b-a189-d07edb7f6dd7", 
        "name": "test2" 
       } 
      ] 
     }; 

     var newData = []; 
     for (var i = 0, l = old.data.length; i < l; i++) { 
      var o = old.data[i]; 
      newData[i] = [o.id, o.name]; 
     } 
     $("#code").text(JSON.stringify(newData)); 
    }); 
</script>