将not-JSON字符串转换为JSON

时间:2016-12-28 07:51:57

标签: php python json string

如何使用PHP(或Python)将描述对象的字符串转换为JSON字符串?

例如:转换它(不是有效的JSON字符串):

var str = "{ hello: 'world', places: ['Africa', 'America', 'Asia', 'Australia'] }"

进入这个:

str = '{ "hello": "world", "places": ["Africa", "America", "Asia", "Australia"] }'

我希望尽可能避免使用eval()。

2 个答案:

答案 0 :(得分:4)

一些正则表达式替换操作应该这样做:

var str = "{ hello: 'world', places: ['Africa', 'America', 'Asia', 'Australia'] }";

var json = str.replace(/(\w+):/g, '"$1":')
              .replace(/'/g, '"');

console.log(json);

即,首先替换后跟冒号(/(\w+):/g)的一个或多个单词字符的任何实例,然后将所有单引号更改为双精度。

答案 1 :(得分:0)

python3

import re

s = "{ hello: 'world', places: ['Africa', 'America', 'Asia', 'Australia'] }"
# ' => "
s = re.sub(r"'", '"', s)  # or s = s.replace("'",'"')
# key: => "key":
s = re.sub(r'(\w+):', '"\g<1>":', s)
print(s)
# { "hello": "world", "places": ["Africa", "America", "Asia", "Australia"] }