我正在使用来自客户端的ajax调用来阅读node.js
中的纯文本文件。
结果:
success gives the result as below.
""[{\"x\":233,\"y\":279,\"count\":1},{\"x\":256,\"y\":243,\"count\":6}]\n[{\"x\":233,\"y\":279,\"count\":1},{\"x\":256,\"y\":243,\"count\":6}]\n""
解析上述结果后:
JSON.parse(result);
"[{"x":233,"y":279,"count":1},{"x":256,"y":243,"count":6}] [{"x":233,"y":279,"count":1},{"x":256,"y":243,"count":6}] "
我想将此字符串更改为对象数组
预期结果是对象数组:
[{"x":233,"y":279,"count":1},{"x":256,"y":243,"count":6},
{"x":233,"y":279,"count":1},{"x":256,"y":243,"count":6}
]
Ajax呼叫代码
$.ajax({
url: document.URL + "getData",
method : "GET",
success: function (result) {
var info = JSON.parse(result);
var object = JSON.parse(info);
console.log(object);
}
});
任何想法都会有所帮助。
答案 0 :(得分:2)
在我看来,你只是得到了双重编码的JSON。只需再次运行JSON.parse()
。
编辑实际上,这不太正确 - 输出包含两个 JS数组,其中\n
分隔符并没有封闭数组。您将不得不稍微操纵数据(现在查看)以使其第二次可解析。
EDIT2 这似乎有效,虽然您当前的var res
行包含一对额外的不合法的引号,因此在此测试中我删除了它们:
var res = "[{\"x\":233,\"y\":279,\"count\":1},{\"x\":256,\"y\":243,\"count\":6}]\n[{\"x\":233,\"y\":279,\"count\":1},{\"x\":256,\"y\":243,\"count\":6}]\n"
var out = JSON.parse(res.replace(/]\s*\[/g, ','));
答案 1 :(得分:2)
这是一些严重混乱的JSON。每端都有一个额外的引号,]\n[
位于中间,应该有一个,
。
你真的应该修复你的服务器以生成有效的JSON,但如果你不能,你可以像这样调整它:
var res = '"[{\"x\":233,\"y\":279,\"count\":1},{\"x\":256,\"y\":243,\"count\":6}]\n[{\"x\":233,\"y\":279,\"count\":1},{\"x\":256,\"y\":243,\"count\":6}]\n"';
var resfix = res.replace( /^"|"$/g, '' ).replace( ']\n[', ',' );
JSON.parse( resfix );
我在var res =
字符串的外部更改了额外的引号集,使其成为有效的JavaScript字符串进行测试。