Jas*_*son 4 javascript python regex json
我在数据库中有一个文本字段,其中包含python json.dumps(list_instance)操作的结果.因此,内部字段具有u'前缀,并打破浏览器的JSON.parse()功能.
JSON字符串的一个示例是
"density": "{u'Penobscot': 40.75222856500098, u'Sagadahoc':
122.27083333333333, u'Lincoln': 67.97977755308392, u'Kennebec':
123.12237174095878, u'Waldo': 48.02117802779616, u'Cumberland':
288.9285325791363, u'Piscataquis': 3.9373586457405247, u'Hancock':
30.698239582715903, u'Washington': 12.368718341168325, u'Aroostook':
10.827378163074039, u'York': 183.47612497543722, u'Franklin':
16.89330963710371, u'Oxford': 25.171240748402518, u'Somerset':
12.425648288323485, u'Knox': 108.48302300109529, u'Androscoggin':
208.75502815768303}"
Run Code Online (Sandbox Code Playgroud)
我想要做的就是替换那些出现u'了'(单引号).我试过了
function renderValues(data){
var pop = JSON.parse(data.density.replace(/u'/g, "'"));
}
Run Code Online (Sandbox Code Playgroud)
但我总是得到一个unexpected token '例外.由于许多可能的关键字段可能包含a u,因此删除该字符是不可行的.如何u'在'不获取异常的情况下找到所有实例并替换它们?
接受的解决方案是错误的.您的代码失败,因为该字符串无效JSON.通过替换它来修复伪JSON字符串是错误的.
你需要做的是修复产生破坏的JSON字符串的python代码,我很确定它是str()或unicode(),其中什么都没有.作为键"密度"的值,你有一个字符串而不是字典,因此,python会返回如下内容:
{"density": "a string that looks like JSON but it is in fact a string reprensentation of a dictionary"}
Run Code Online (Sandbox Code Playgroud)
该函数json.dumps将返回始终有效的JSON字符串.
解决这个问题,你不必用肮脏的字符串替换或任何东西来破解.
编辑
检查以下代码段.在那里你可以看到u'...'只是unicode对象的python可读表示,并且无法使用JSON序列化做任何事情.
>>> import json
>>> data = {u'name': u'Manuel', u'age': 26}
>>> print data
{u'age': 26, u'name': u'Manuel'} # this is the python representation of a dictionary
>>> print json.dumps(data)
{"age": 26, "name": "Manuel"} # this is a valid JSON string
Run Code Online (Sandbox Code Playgroud)
JSON没有正确形成,就这么简单.
| 归档时间: |
|
| 查看次数: |
5143 次 |
| 最近记录: |