Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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输入返回所有字段的JSON路径?_Javascript_Arrays_Json_Jsonpath - Fatal编程技术网

Javascript 从数组JSON输入返回所有字段的JSON路径?

Javascript 从数组JSON输入返回所有字段的JSON路径?,javascript,arrays,json,jsonpath,Javascript,Arrays,Json,Jsonpath,输入JSON数组时,我需要一个JSON路径来返回所有字段。这就像将数组JSON转换为平面JSON文件 数组JSON输入: { "field1": "ALNT12345", "field2": "ALNT345346", "field3": "2015353423", "field4": "2332124343", "arrayfield1": [ { "arr1": "625347", "ar

输入JSON数组时,我需要一个JSON路径来返回所有字段。这就像将数组JSON转换为平面JSON文件

数组JSON输入:

{
    "field1": "ALNT12345",
    "field2": "ALNT345346",
    "field3": "2015353423",
    "field4": "2332124343",
    "arrayfield1": [
        {
            "arr1": "625347",
            "arr2": "rere"
        },
        {
            "arr1": "634441",
            "arr2": "sdfsd"
        }
    ]
}
[
  {
    "field1": "ALNT12345",
    "field2": "ALNT345346",
    "field3": "2015353423",
    "field4": "2332124343",
    "arr1": "625347",
    "arr2": "rere"
  },
  {
    "field1": "ALNT12345",
    "field2": "ALNT345346",
    "field3": "2015353423",
    "field4": "2332124343",
    "arr1": "634441",
    "arr2": "sdfsd"
  }
]
上述数组json必须转换为2条记录,如下所示。因此,我尝试使用json路径来实现这一点

所需输出:

{
    "field1": "ALNT12345",
    "field2": "ALNT345346",
    "field3": "2015353423",
    "field4": "2332124343",
    "arrayfield1": [
        {
            "arr1": "625347",
            "arr2": "rere"
        },
        {
            "arr1": "634441",
            "arr2": "sdfsd"
        }
    ]
}
[
  {
    "field1": "ALNT12345",
    "field2": "ALNT345346",
    "field3": "2015353423",
    "field4": "2332124343",
    "arr1": "625347",
    "arr2": "rere"
  },
  {
    "field1": "ALNT12345",
    "field2": "ALNT345346",
    "field3": "2015353423",
    "field4": "2332124343",
    "arr1": "634441",
    "arr2": "sdfsd"
  }
]
我尝试的是JSON路径

$.arrayfield1*

但它只返回数组字段。如果JSON路径不是实现这一点的方法,请您建议javascript代码返回所有字段


谢谢。

您可能想试试这个:

var arr = {
    "field1": "ALNT12345",
    "field2": "ALNT345346",
    "field3": "2015353423",
    "field4": "2332124343",
    "arrayfield1": [
        {
            "arr1": "625347",
            "arr2": "rere"
        },
        {
            "arr1": "634441",
            "arr2": "sdfsd"
        }
    ],
    "arrayfield2": [
        {
            "arr1": "625347",
            "arr2": "rere"
        },
        {
            "arr1": "634441",
            "arr2": "sdfsd"
        }
    ]
};

console.log(conversion(arr));

function conversion(arr) {
    var oneLevel = {};
    var multiLevel = [];
    for(var key in arr) {
        var item = arr[key];
        if(typeof item != "object") {
            oneLevel[key] = item;
        } else {
            multiLevel = multiLevel.concat(item);
        }
    }

    for(var i in multiLevel) {
        for(var j in oneLevel) {
            multiLevel[i][j] = oneLevel[j];
        }
    }

    return multiLevel;
}
下面是测试的小提琴链接

尝试以下方法:


尝试使用
Array.prototype.map()
作为循环中的
Array.prototype.forEach()

var数据={
“字段1”:“ALNT12345”,
“字段2”:“ALNT345346”,
“字段3”:“2015353423”,
“字段4”:“2332124343”,
“arrayfield1”:[
{
“arr1”:“625347”,
“arr2”:“rere”
},
{
“arr1”:“634441”,
“arr2”:“sdfsd”
}
]
};
var res=data.arrayfield1.map(函数(val,键){
var obj={};
用于(数据中的var i){
if(!Array.isArray(数据[i])){
obj[i]=数据[i]
}
}
变量名称=Object.keys(val);
name.forEach(函数(值、索引){
obj[名称[索引]]=val[值]
})
返回obj
});
console.log(JSON.stringify(res,null,4))
试试这个:-

var x = {
    "field1": "ALNT12345",
    "field2": "ALNT345346",
    "field3": "2015353423",
    "field4": "2332124343",
    "arrayfield1": [
        {
            "arr1": "625347",
            "arr2": "rere"
        },
        {
            "arr1": "634441",
            "arr2": "sdfsd"
        }
    ]
};



var arr = [];

if(x.hasOwnProperty('arrayfield1')) {
    x.arrayfield1.forEach(function(obj1){
        var obj = JSON.parse(JSON.stringify(x));
        delete obj.arrayfield1;
        for(key in obj1) {
            obj[key] = obj1[key];
        }
        arr.push(obj);
    });
}   

console.log(arr);