是否可以在javascript中背靠背解析JSON对象?在正常情况下,我正在解析一个看起来像这样的JSON对象:
{"success":true, "canUpload":false, "array":[ ], "test": "value"}
我对上面没有任何问题。但是,我想知道我是否可以解析两个能够检测到两个连接在一起的JSON对象的JSON库?例如,
{"success":true, "canUpload":false, "array":[ ], "test": "value"}{"newJSONobj":"new value1"}
我期待第二个例子中有两个JSON对象。
答案 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>