[英]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
元素映射到對象(請參見MDN以獲取Array.map
):
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.parse與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>
使用UnderscoreJS很簡單:
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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.