javascript - 将字符串转换为嵌套数组

标签 javascript string-conversion

我有一个从服务器传递的字符串,该字符串是使用 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 }
];

我怎样才能做到这一点?

最佳答案

正如评论中指出的,最好的解决方案是返回 valid JSON来自服务器并使用 JSON.parse 解析它。
您可以使用类似 https://jsonlint.com/ 的工具或JSV检查您的 JSON 是否有效。

如果由于某些“现实世界问题”,您的服务器不符合 JSON 标准,您可以使用像 dirty-json 这样的脏解析器。或者自己写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 } ]

关于javascript - 将字符串转换为嵌套数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45168649/

相关文章:

sql-server - 如何检查 VARCHAR 字符串是否(不是)十六进制?

java - 如何将格式化字符串转换为 float ?

javascript - jspContainer 内缺少 div jspVerticalBar

javascript - Chart.js 如何对齐 x 刻度?

Javascript for 循环获取唯一失败

java - 我们不能将字符串转换为整数并同时将其添加到其他整数并检查 if 条件是否等于另一个整数吗?

javascript - ECMA Script 5 规范如何允许成功解析大于 0xFF 的十六进制整数?

javascript - 如何仅在客户端使用 JSON

c# - 检查字符串类型到其他类型的转换

iphone - 如何将 nsstring 转换为 cString?