【问题标题】:Django ajax query returning u character in serialized returnDjango ajax 查询在序列化返回中返回 u 字符
【发布时间】:2014-01-23 18:55:50
【问题描述】:

我有一个 Django 模型

class StateCensusHistory(models.Model):
  id = models.AutoField(primary_key = True)
  year = models.IntegerField()
  population = models.TextField()
  density = models.TextField()
  pop_change = models.TextField()

  def __unicode__(self):
    return "%d, %s\n" % (self.year, self.population)

  class Meta:
    app_label = "app"
    db_table = "state_census_history"

它包含一个列表的结果,多个列表通过json.dumps(list_object) 转储到 json 字符串。该字段在通过序列化程序 json 转换进行查询时返回。我的问题是 JSON.parse() 由于 unexpected token u 而抛出 SyntaxError

如果不修改文本字段本身,我该如何解决这个问题?

在我的视图文件中,我获取查询集并通过返回序列化数据

return HttpResponse(json.dumps({"success" : "true", 
                                "data" : serializers.serialize("json", countyData)}), 
                        mimetype = "application/json")

并通过

解析
var pop = JSON.parse(data[0].fields.density);

正在解析的示例返回字符串值是

{\"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}\"}

【问题讨论】:

    标签: ajax django json django-serializer


    【解决方案1】:

    您对数据进行了两次编码。调用serialise已经是json了,不需要再调用json.dumps了。

    【讨论】:

    • 我没有将数据序列化两次。数据库字段包含一段时间前进行的json.dumps 调用的结果。整个模型实例正在序列化以响应来自浏览器的查询。
    • 我不明白你的评论。由于我所说的原因,您确实在连载两次。
    • 在解析初始数据时,我创建了多个dict结构来保存多个操作的结果。然后将这些 dict 结构解析为 json 字符串并保存为文本字段。我的目标是将整个模型作为 json 对象返回
    猜你喜欢
    • 1970-01-01
    • 2016-07-21
    • 1970-01-01
    • 2014-05-19
    • 2021-02-19
    • 2020-08-13
    • 2019-10-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多