Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将JSON对象转换为另一种格式_Javascript - Fatal编程技术网

Javascript 将JSON对象转换为另一种格式

Javascript 将JSON对象转换为另一种格式,javascript,Javascript,我想将json格式的输出转换为另一个输出。 我怎么能做到 例如: 旧json 我想要的新Json,没有大括号,只有带括号的 "aaData": [ [ "e49e183e-9325-4e62-8eda-7e63fb7cdbbd","test" ], [ "ac310894-d808-447b-a189-d07edb7f6dd7","test2" ] ] 尝试以下方法 function format(oldFormat) {

我想将json格式的输出转换为另一个输出。 我怎么能做到

例如: 旧json

我想要的新Json,没有大括号,只有带括号的

"aaData": 
[ 
    [
        "e49e183e-9325-4e62-8eda-7e63fb7cdbbd","test"
    ],
    [
        "ac310894-d808-447b-a189-d07edb7f6dd7","test2"
    ]
] 
尝试以下方法

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
    };
}
函数期望接收一个JavaScript对象而不是JSON,并返回一个JavaScript对象而不是JSON


您可以使用
JSON.parse(yourJsonString)
将JSON字符串转换为JavaScript对象,也可以使用
JSON.stringify(yourJavaScriptObject)
将JavaScript对象转换为JSON字符串。您只需循环遍历这些项并将它们推送到一个新对象中即可:

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] );   
}
var len=old.data.length,
newData={aaData:[]},
我
对于(i=0;i
例如:


您可能正在将它们传递给DataTables(因为您使用的名称是aaData),请注意DataTables与JSON不同。

您可以将其作为字符串替换:

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 });
var oldData=JSON.parse(oldJSON)[“data”],
aa数据=[],
啊,,
newJSON,
i、 k;
对于(i=0;i

其中,
oldJSON
是问题中使用旧格式的字符串。(我只是循环了每个数组项中的属性,而不是假设它们总是有“id”和“name”属性。)

您可以使用JavaScript将输入数据转换为新形式的对象,然后使用JSON JavaScript库(JSON.stringify函数,请参阅此处的更多信息)将新创建的对象转换为正确的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>

$(文档).ready(函数(){
var old={“数据”:
[
{
“id”:“e49e183e-9325-4e62-8eda-7e63fb7cdbbd”,
“名称”:“测试”
},
{
“id”:“ac310894-d808-447b-a189-d07edb7f6dd7”,
“名称”:“test2”
}
]
};
var newData=[];
for(var i=0,l=old.data.length;i
您还可以使用JSON路径,并使用数据集上的查询($…id)生成您想要的内容。结账并在左侧框中输入数据,在文本框中输入$..id,以获取JSONPath语法

使用JSONata库的另一个答案:

您想要的东西可以通过以下方式轻松实现:

$.[id, name]
有关实时演示,请参阅:

这不是很有效-新旧格式之间是否都应该有一对大括号?我需要的正是第二个大括号。第二个格式不是有效的JSON,因此不能使用Javascript JSON库。您可以
JSON.stringify()
您的JSON对象,然后执行字符串替换,将所有
{
替换为
[
。我想说的是,上面的JSON不是有效的JSON,除非它在整件事情周围有一个小括号,但是考虑到你接受的答案根本没有使用JSON,我猜你是想问JavaScript对象而不是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>
$.[id, name]