问题
python端http请求传输数据格式,如:
body = {"param":{"data":"{'username':'vincent'}"}}
JS端接收后预期是可以将python端传输的{"data":"{'username':'vincent'}"}
转换为JSON对象,但实际通过键param
取到的值是一个字符串{'data': '{\"username\":\"vincent\"}'}
,JSON.parse解析时报错如下:
Uncaught SyntaxError: Expected property name or ‘}’ in JSON at position 1
at JSON.parse ()
at :1:6
当然合法的JSON字符串键值是双引号标记的,而尝试通过正则替换:.replace(/['"]/g,'"'
替换引号时将导致第二个{
后的引号截断整个字串的解析。
解决办法
正确的解析方法是利用eval()
:
eval("(" + `{'data': '{\"username\":\"vincent\"}'}` + ")")