在JavaScript中将无效的JSON对象转换为有效的JSON对象

我知道这是已经被问到的问题,但我没有得到任何问题的答案以前问…

我的问题是 – 服务器发送一个JSON对象的数组作为string,我想将string转换为有效的JSON数组。

示例:服务器发送像这样

'{ "ts": "3170075", "eventid": 25, "oper_minutes": 48577, "time": "2016-12-02T06:36:36Z", "lto": "7200000", "package_name": "XXX", "timestamp": "1480660593188", "action_type": "1", "events": [{ "device_name": 0, "key_category": 1, "eventid": 15, "ts": "2111" }, { "power_state": 3, "reason": 1, "eventid": 1, "ts": "2113" }] }, { "ts": "3170084", "eventid": 25, "oper_minutes": 48577, "time": "2016-12-02T06:36:36Z", "lto": "7200000", "package_name": "XXXX", "timestamp": "1480660593218", "action_type": "1", "events": [{ "device_name": 0, "key_category": 1, "eventid": 15, "ts": "2111" }, { "power_state": 3, "reason": 1, "eventid": 1, "ts": "2113" }] }' 

我想要使​​用纯JavaScript将其转换为两个对象的有效数组。

例:

  [{ "ts": "3170075", "eventid": 25, "oper_minutes": 48577, "time": "2016-12-02T06:36:36Z", "lto": "7200000", "package_name": "XXX", "timestamp": "1480660593188", "action_type": "1", "events": [{ "device_name": 0, "key_category": 1, "eventid": 15, "ts": "2111" }, { "power_state": 3, "reason": 1, "eventid": 1, "ts": "2113" }] }, { "ts": "3170084", "eventid": 25, "oper_minutes": 48577, "time": "2016-12-02T06:36:36Z", "lto": "7200000", "package_name": "XXX", "timestamp": "1480660593218", "action_type": "1", "events": [{ "device_name": 0, "key_category": 1, "eventid": 15, "ts": "2111" }, { "power_state": 3, "reason": 1, "eventid": 1, "ts": "2113" }] }] 

我已经尝试过JSON.parse,JSON.stringify等

没有预期的有效结果

注意:这个对象数组可能是任意大小的,服务器有时会发送1000个对象,有时只有10个string。 不应该花费太多时间来处理。

请帮助,我坚持这一点差不多一天..我在nodeJS中使用这个只有纯javaScript或与NPM库。

您发送的JSONstring无效,因为它应该封装在[]中。

你可以这样做:

 var str = '{"ts": "3170075","eventid": 25,"oper_minutes": 48577,"time": "2016-12-02T06:36:36Z","lto": "7200000","package_name": "XXX","timestamp": "1480660593188","action_type": "1","events": [{"device_name": 0,"key_category": 1,"eventid": 15,"ts": "2111" }, {"power_state": 3,"reason": 1,"eventid": 1,"ts": "2113" }]}, {"ts": "3170084","eventid": 25,"oper_minutes": 48577,"time": "2016-12-02T06:36:36Z","lto": "7200000","package_name": "XXXX","timestamp": "1480660593218","action_type": "1","events": [{"device_name": 0,"key_category": 1,"eventid": 15,"ts": "2111" }, {"power_state": 3,"reason": 1,"eventid": 1,"ts": "2113"}]}'; var obj = JSON.parse(`[${str}]`); 

您尝试手动执行的错误是因为您的原始string是无效的张贴在您的文章(因为换行符)。