将字符串转换为嵌套数组
Convert string to nested array
我有一个从服务器传递的字符串,它是用 AJAX 调用的,我必须将该字符串转换为一个嵌套数组,该数组将用于填充 PDF。
例如:
var tableData = "[{ name: 'Bartek', age: 34 },{ name: 'John', age: 27 },{ name:'Elizabeth', age: 30 }]";
我需要转换成 JavaScript 中的数组,如下所示:
var newTableData = [
{ name: 'Bartek', age: 34 },
{ name: 'John', age: 27 },
{ name: 'Elizabeth', age: 30 }
];
我该怎么做?
通过稍微改变 return 来自服务器的字符串的方式,您可以 JSON.parse 它
var dataString = '[{"name":"Bartek","age":34},{"name":"John","age":27},{"name":"Elizabeth","age":30}]';
var data = JSON.parse(dataString);
console.log(data);
正如评论中指出的那样,最好的解决方案是从服务器 return 一个 valid JSON 并使用 JSON.parse
.
解析它
您可以使用 https://jsonlint.com/ or JSV 等工具来检查您的 JSON 是否有效。
如果由于某些 "real world problem",您的服务器没有 JSON 投诉,您可以使用像 dirty-json or write your own JSON parse.
这样的脏解析器
dirty-json
不需要引用对象键,可以处理单引号值字符串。
var dJSON = require('dirty-json');
dJSON.parse("{ test: 'this is a test'}").then(function (r) {
console.log(JSON.stringify(r));
});
// output: {"test":"this is a test"}
您的最后选择虽然在技术上可行且最容易实施,但可能是您最糟糕的选择,因为它是dangers。但开箱即用:eval
.
eval(tableData);
// [ { name: 'Bartek', age: 34 },
// { name: 'John', age: 27 },
// { name: 'Elizabeth', age: 30 } ]
使用eval()方法评估给定代码的完成值。如果完成值为空,则返回undefined:
var tableData = "[{ name: 'Bartek', age: 34 },{ name: 'John', age: 27 },{ name:'Elizabeth', age: 30 }]";
tableData = eval(tableData);
console.log(tableData[0]);
我有一个从服务器传递的字符串,它是用 AJAX 调用的,我必须将该字符串转换为一个嵌套数组,该数组将用于填充 PDF。
例如:
var tableData = "[{ name: 'Bartek', age: 34 },{ name: 'John', age: 27 },{ name:'Elizabeth', age: 30 }]";
我需要转换成 JavaScript 中的数组,如下所示:
var newTableData = [
{ name: 'Bartek', age: 34 },
{ name: 'John', age: 27 },
{ name: 'Elizabeth', age: 30 }
];
我该怎么做?
通过稍微改变 return 来自服务器的字符串的方式,您可以 JSON.parse 它
var dataString = '[{"name":"Bartek","age":34},{"name":"John","age":27},{"name":"Elizabeth","age":30}]';
var data = JSON.parse(dataString);
console.log(data);
正如评论中指出的那样,最好的解决方案是从服务器 return 一个 valid JSON 并使用 JSON.parse
.
解析它
您可以使用 https://jsonlint.com/ or JSV 等工具来检查您的 JSON 是否有效。
如果由于某些 "real world problem",您的服务器没有 JSON 投诉,您可以使用像 dirty-json or write your own JSON parse.
这样的脏解析器dirty-json
不需要引用对象键,可以处理单引号值字符串。
var dJSON = require('dirty-json');
dJSON.parse("{ test: 'this is a test'}").then(function (r) {
console.log(JSON.stringify(r));
});
// output: {"test":"this is a test"}
您的最后选择虽然在技术上可行且最容易实施,但可能是您最糟糕的选择,因为它是dangers。但开箱即用:eval
.
eval(tableData);
// [ { name: 'Bartek', age: 34 },
// { name: 'John', age: 27 },
// { name: 'Elizabeth', age: 30 } ]
使用eval()方法评估给定代码的完成值。如果完成值为空,则返回undefined:
var tableData = "[{ name: 'Bartek', age: 34 },{ name: 'John', age: 27 },{ name:'Elizabeth', age: 30 }]";
tableData = eval(tableData);
console.log(tableData[0]);