javascript - 单个 JavaScript 对象列表到适当的数组

标签 javascript node.js json

我遇到了将单个 JavaScript 对象转换为适当的 JavaScript 数组的问题。

列表如下所示:

{ "property1": "value", someArray: [123], "property2": [] }
{ "property1": "value", someArray: [123], "property2": [] }
{ "property1": "value", someArray: [123], "property2": [] }
{ "property1": "value", someArray: [123], "property2": [] }
{ "property1": "value", someArray: [123], "property2": [] }

因此,如您所见,我需要处理两件事:

  1. 添加缺失的逗号
  2. 从中创建数组。

为了解析这个响应,我使用了 Node JS。我尝试将其转换为数组,如下所示:

const array = `[${response.data}.replace(/}/g, '},')}{}]`

首先,我用数组包装所有内容,添加逗号和一个空对象以去除最后一个不需要的逗号。

如果我查看输出,一切似乎都正常,但是当我尝试使用 JSON.parse() 解析它时,我收到了

Unexpected ']' on position n

我不确定是我做错了什么,还是数据已经损坏,因为它太长了。

最佳答案

您可以使用正则表达式在除最后一行以外的每一行末尾添加逗号,将 someArray 更改为 "someArray",然后将整个字符串包围在 []JSON.parse 它:

const response = `{ "property1": "value", someArray: [123], "property2": [] }
{ "property1": "value", someArray: [123], "property2": [] }
{ "property1": "value", someArray: [123], "property2": [] }
{ "property1": "value", someArray: [123], "property2": [] }
{ "property1": "value", someArray: [123], "property2": [] }`;

const json = '[' + response.replace(/}(?!$)/g, '},').replace(/someArray/g, '"$&"') + ']';
const arr = JSON.parse(json);
console.log(arr);

但这仍然是一个 X/Y 问题 - 最好修复任何为您服务的(实际上损坏的)数据,让它为您提供正确的 JSON,这样就不需要像这样的 hack。

关于javascript - 单个 JavaScript 对象列表到适当的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56182068/

相关文章:

javascript - 数据表警告 "unknown parameter 0"

javascript - 在 Windows 8 上 rake Assets :precompile failed in rails 3. 2.8

json - 当 Controller 被 Authorize.net webhook 调用时,Symfony Request 对象中的空数据

android - 适用于 Android 和 Mysql 的最佳 Web 服务

javascript - jQuery 到纯 javaScript 问题

javascript - AngularJS - href 重定向到同一域导致页面在数据准备好之前显示

node.js - 在集合/对象中查找 - SailsJS 和 Waterline ORM

node.js - 为什么 Node.js 有增量内存使用?

node.js - 如何从多部分表单数据中获取 Node JS 中间件中的请求主体?

java - 如何在java中将JsonString反序列化为json格式