将JSON对象转换为另一个 - 格式化它

时间:2012-01-26 10:11:58

标签: javascript

我想将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"
    ]
] 

6 个答案:

答案 0 :(得分: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/

您可能会将这些传递给DataTables(因为您使用名称aaData),请注意DataTables takes an object as the configuration,它与JSON不同。

答案 1 :(得分: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字符串。

答案 2 :(得分: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”属性。)

答案 3 :(得分: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>

答案 4 :(得分:1)

使用 JSONata 库的另一个答案:

使用以下命令可以轻松实现所需的内容:

$.[id, name]

有关现场演示,请查看: https://try.jsonata.org/UXYx6_xEh

答案 5 :(得分:0)

您还可以使用JSON路径,并在数据集上使用查询($ .. id)来产生您似乎要查找的内容。是否结帐https://jsonpath.com/?然后在左侧框中输入数据,并在文本框中输入JSONPath语法的$ .. id