Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.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_Jquery_Arrays_Json_Html - Fatal编程技术网

带有数组逗号分隔Javascript的JSON解析器

带有数组逗号分隔Javascript的JSON解析器,javascript,jquery,arrays,json,html,Javascript,Jquery,Arrays,Json,Html,我有一个JSON结构,看起来像这样 "content" : { "state" : { "Idle" : [ [ 78.366666667, 1436955825 ], [ 71.281111111, 1436955840 ], [ 70.41, 1436955855

我有一个JSON结构,看起来像这样

"content" : {
    "state" : {
      "Idle" : [
        [
          78.366666667,
          1436955825
        ],
        [
          71.281111111,
          1436955840
        ],
        [
          70.41,
          1436955855
        ],
        [
          74.283333333,
          1436955870
        ],
        [
          76.411111111,
          1436955885
        ]
       ] 
        } }
我要做的是解析这个值。我必须把逗号分隔的值分成x和y。我必须解析这些值并将它们分开。我在解析它们时遇到问题

应该是这样的

 "Idle" : [
            {
              "x" : 78.366666667,
              "y" :1436955825
            },
            {
              "x" :71.281111111,
              "y" :1436955840
            },
            {
              "x" :70.41,
              "y" :1436955855
            },
            {
              "x" :74.283333333,
              "y" :1436955870
            },
            {
              "x" :76.411111111,
              "y" :1436955885
            }
           ]
var容器={
“内容”:{
“国家”:{
“闲置”:[
[
78.366666667,
1436955825
],
[
71.281111111,
1436955840
],
[
70.41,
1436955855
],
[
74.283333333,
1436955870
],
[
76.411111111,
1436955885
]
]
}
}
};
var\u oldIdle=container.content.state.Idle,
_newIdle=[];
对于(变量i=0;i<\u olidle.length;i++){
_newIdle.push({
x:_olidle[i][0],
y:_olidle[i][1]
});
}
container.content.state.Idle=\u newIdle;
With很简单:

试着这样做:

var json={
“内容”:{
“国家”:{
“闲置”:[
[
78.366666667,
1436955825
],
[
71.281111111,
1436955840
],
[
70.41,
1436955855
],
[
74.283333333,
1436955870
],
[
76.411111111,
1436955885
]
]
}
}
};
var newObj={},
arr=[];
$.each(json.content.state.Idle,函数(i,项){
arr.push({x:item[0],y:item[1]});
});
newObj.idle=arr;
console.log(newObj)

…Idle
元素映射到对象(请参见
数组.Map
):

测试={
内容:{
声明:{
闲置:[
[
78.366666667,
1436955825
],
[
71.281111111,
1436955840
],
[
70.41,
1436955855
],
[
74.283333333,
1436955870
],
[
76.411111111,
1436955885
]
]
} 
} 
};
test.content.state.Idle=test.content.state.Idle.map(
功能(五){
返回{x:v[0],y:v[1]};
}
);
document.querySelector(“#result”).textContent=JSON.stringify(test,null,”)

如果您有JSON字符串,则可以与
恢复器函数一起使用

var json='{“内容”:{“状态”:{“空闲”:[[78.36666671436955825],[71.2811111436955840],[70.4114369955855],[74.28333333143695870],[76.4111111111436955885]};
var result=JSON.parse(JSON,函数(k,v){
if((v instanceof数组)&&(isFinite(Number(k))){
//如果数组带有坐标-则返回对象
返回{
x:v[0],
y:v[1]
};
}
返回v;
})
控制台日志(结果);
document.getElementById('r').innerHTML=JSON.stringify(结果,null,2)

Json为Javascript所熟知。您可以获得一个普通javascript对象,然后根据需要对其进行转换。你面临的问题是什么?您已经尝试了什么?有没有代码显示您的解析尝试?您不认为第二个是无效的吗。它应该在
{}
@Jai-这将使它无效。您有JSON字符串或普通对象吗?
arr.push({x:item[0],y:item[1]})。别把它复杂化了。谢谢@Cerbrus没有那样想。再次感谢。你不需要一个库来映射数组。我没有说你需要它,我只是给出了正确的答案。这不是最好的吗?嗯,我可以同意,但这是正确的。向下投票是不正确的,imho。@Michelem很好,这可以用简单的js来完成,那么为什么还要麻烦使用lib.Downvote工具提示:“这个答案没有用。”我认为这个答案没有用,因为它需要用户加载一个库来完成一些可以用原生js轻松完成的事情。此外,用户可以根据自己的意愿投票。我不必解释我的反对票…我用这些值表示人力车图的x和y。但问题是人力车不工作,因为x有双引号。撇开缩进偏好不谈,这是最好的方法+1:P
var container = {
    "content": {
        "state": {
            "Idle": [
                [
                    78.366666667,
                    1436955825
                ],
                [
                    71.281111111,
                    1436955840
                ],
                [
                    70.41,
                    1436955855
                ],
                [
                    74.283333333,
                    1436955870
                ],
                [
                    76.411111111,
                    1436955885
                ]
            ]
        }
    }
};

var _oldIdle = container.content.state.Idle,
    _newIdle = [];

for (var i = 0; i < _oldIdle.length; i++) {
    _newIdle.push({
        x: _oldIdle[i][0],
        y: _oldIdle[i][1]
    });
}

container.content.state.Idle = _newIdle;
var values = {
    "content": {
        "state": {
            "Idle": [
                [
                78.366666667,
                1436955825],
                [
                71.281111111,
                1436955840],
                [
                70.41,
                1436955855],
                [
                74.283333333,
                1436955870],
                [
                76.411111111,
                1436955885]
            ]
        }
    }
};

var newValues = _.map(values.content.state.Idle, function (value, key) {
    return {x: value[0], y: value[1]};
});

console.log(newValues);