2

我有一个字符串:

a = "{u'a':[u'123',u'321'], u'b':[u'456',u'654']}"

我想将此转换json 数据。

怎么做?

我已经尝试过 JSON.parse(),但它会引发错误。

SyntaxError: Unexpected token u
4

5 回答 5

3

在我看来,这就像 Python 文字语法。告诉编写 Python 部分的人将其编码为 JSON,而不仅仅是将结构输出为字符串。

于 2013-08-30T04:48:51.593 回答
1

在这种特殊情况下,您只需将每个替换u'x'为即可"x",您将拥有有效的 JSON:

var a = "{u'a':[u'123',u'321'], u'b':[u'456',u'654']}";

// Convert to JSON (May not work with other inputs!)
var json = a.replace(/u'((?:[^'\\]|\\.)*)'/g, function(a,str){
  return '"' + str.replace(/\\'/g, '\'').replace(/"/g, '\\"') + '"'; 
});

// Parse the JSON into a Javascript object
var obj = JSON.parse(json);

更新为使用对象中的一些引号:

var a = "{u'a':[u'\\'123\\'',u'321'], u'b':[u'456\\\\',u'\"654\"']}";

变成:

{a:["'123'","321"], b:["456\",""654""]}
于 2013-08-30T04:59:00.653 回答
0

您需要将输入字符串更改为有效的 JSON 字符串。

我想这就是你想要的:

JSON.parse('{"a":["123","321"], "b":["456","654"]}')

于 2013-08-30T04:50:15.710 回答
-1

JSON 应该只包含字符串。

a = "{u'a':[u'123',u'321'], u'b':[u'456',u'654']}"

在这里我只能假设这u是一个变量。将其更改为:

a = "{"+u+"'a':["+u+"'123',"+u+"'321'], "+u+"'b':["+u+"'456',"+u+"'654']}"

于 2013-08-30T04:49:37.923 回答
-1

变量(键/值)是字符串,因此需要用引号括起来才能被解析为有效的 JSON。

// 在键/值对周围加上引号。

var a = "{\"u'a'\":[\"u'123'\",\"u'321'\"], \"u'b'\":[\"u'456'\",\"u'654'\"]}";

jQuery

a = $.parseJSON(a);
于 2013-08-30T05:00:27.160 回答