是否可以在JavaScript中解析两个背靠背的JSON对象?

时间:2017-01-19 21:50:31

标签: javascript json

是否可以在javascript中背靠背解析JSON对象?在正常情况下,我正在解析一个看起来像这样的JSON对象:

{"success":true, "canUpload":false, "array":[ ], "test": "value"}

我对上面没有任何问题。但是,我想知道我是否可以解析两个能够检测到两个连接在一起的JSON对象的JSON库?例如,

{"success":true, "canUpload":false, "array":[ ], "test": "value"}{"newJSONobj":"new value1"}

我期待第二个例子中有两个JSON对象。

4 个答案:

答案 0 :(得分:2)

您可以通过字符串操作将其转换为JSON数组。像:

var objects = JSON.parse('[' + yourString.replace(/\}\{/g, '},{') + ']');

这适用于两种情况(1个或多个对象)。

答案 1 :(得分:2)

如果您使用的是网络标准,则不能。如果您有权访问创建该JSON字符串的源,请对其进行正确格式化。您需要将其转换为两个对象的数组。您必须使用逗号分隔这两个对象,然后将这两个对象包装在括号中。

[{
    "success": true,
    "canUpload": false,
    "array": [],
    "test": "value"
}, {
    "newJSONobj": "new value1"
}]

如果您无法访问源代码,那么您必须使用一些javascript字符串操作将其分解为2个单独的字符串,或添加一些其他字符以实现列出的格式以上。这是一个可能的解决方案:

var jsonObjects = JSON.parse('[' + jsonString.replace(/\}\{/g, '},{') + ']');

这实际上将两个对象包装在括号中,并用逗号分隔两个对象(创建一个包含2个对象的数组)。 但请注意,这不是100%可靠。您可能会获得此过程无法正确处理的其他格式的数据。

答案 2 :(得分:0)

您展示的内容不是有效的json字符串(对象),因此在尝试解析时会出现错误。如果连接字符串是由您自己创建的而不是传递给您,则可以创建一个包含两个(或更多)对象的字符串,如下所示。然后你将获得一个包含两个(或更多)对象的数组(一个对象本身)。

  '[{"success":true, "canUpload":false, "array":[ ], "test": "value},{"newJSONobj":"new value1"}]'

答案 3 :(得分:0)

如果是这样的JSON字符串:

'{"success":true, "canUpload":false, "array":[ ], "test": "value"}{"newJSONobj":"new value1"}'

然后是的。你只需要做一点修改就可以了。

data = '{"success":true, "canUpload":false, "array":[ ], "test": "value"}{"newJSONobj":"new value1"}'
data.split(/(?!})(?={)/).map(function(v, i) { return JSON.parse(v); })

请参阅?

var data = '{"success":true, "canUpload":false, "array":[ ], "test": "value"}{"newJSONobj":"new value1"}';

var result = data.split(/(?!})(?={)/).map(function(v, i) { return JSON.parse(v); });

console.log(result)
<h1><center>See Console</center><h1>