JSON解析器与数组,逗号分隔的Javascript
JSON parser with Array Comma Separated Javascript
我有一个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
}
]
将...Idle
元素映射到对象(Array.map
参见MDN):
test = {
content: {
state: {
Idle: [
[
78.366666667,
1436955825
],
[
71.281111111,
1436955840
],
[
70.41,
1436955855
],
[
74.283333333,
1436955870
],
[
76.411111111,
1436955885
]
]
}
}
};
test.content.state.Idle = test.content.state.Idle.map(
function (v) {
return { x: v[0], y: v[1] };
}
);
document.querySelector("#result").textContent = JSON.stringify(test, null, " ");
<pre id="result"></pre>
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 json = {
"content": {
"state": {
"Idle": [
[
78.366666667,
1436955825
],
[
71.281111111,
1436955840
],
[
70.41,
1436955855
],
[
74.283333333,
1436955870
],
[
76.411111111,
1436955885
]
]
}
}
};
var newObj = {},
arr = [];
$.each(json.content.state.Idle, function(i, item) {
arr.push({x: item[0], y: item[1]});
});
newObj.idle = arr;
console.log(newObj);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
如果你有JSON字符串,你可以使用JSON。解析reviver function
var json = '{"content":{"state":{"Idle":[[78.366666667,1436955825],[71.281111111,1436955840],[70.41,1436955855],[74.283333333,1436955870],[76.411111111,1436955885]]}}}';
var result = JSON.parse(json, function(k, v) {
if ((v instanceof Array) && (isFinite(Number(k)))) {
//if array with coordinates - return object instead
return {
x: v[0],
y: v[1]
};
}
return v;
})
console.log(result);
document.getElementById('r').innerHTML = JSON.stringify(result,null,2)
<pre id='r'></pre>
With UnderscoreJS很简单:
JSFiddle
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);
相关文章:
- javascript函数内部的代码用逗号而不是分号分隔
- 尝试使用Javascript正则表达式来获取“&"分隔文本,无论它是否's是最后一个值
- 使用JavaScript分析分隔文本行
- 用分隔符分隔具有多个整数值的字符串的Javascript"重试错误的值
- Javascript-Regex,用于逗号分隔的字母数字
- 在javascript中用逗号分隔的字符串分割值
- 使用 javascript 传递逗号分隔的变量
- 将逗号分隔的字符串转换为 JavaScript 数组
- 用逗号分隔数组,JavaScript
- 在 Javascript 中将逗号分隔值转换为 JSON 对象
- 将JSON对象转换为javascript中的逗号分隔值
- 向Javascript输出中添加逗号分隔的数字
- javascript编码风格的函数以逗号分隔;这个“;
- 如何使用javascript分隔这些字符串
- 如何用逗号和句点分隔JavaScript字符串
- 如何在php和javascript中使用regex检测空格分隔词(在全文搜索查询中)
- 如何使用javascript将逗号分隔的变量解析为数组
- 用Javascript Regex匹配逗号分隔的重复字符串
- 移除分隔Javascript/Jquery的括号
- 如何用空格和标点分隔javascript字符串