Javascript - 在JSON字符串中删除u'的出现,parse正在返回意外的令牌

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''不获取异常的情况下找到所有实例并替换它们?

bgu*_*ach 5

接受的解决方案是错误的.您的代码失败,因为该字符串无效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没有正确形成,就这么简单.

  • 你'..'只是unicode对象的python表示,这与字典的JSON序列化完全无关.键和值都不以"u"为前缀. (2认同)