json序列化中文python_将JSON反序列化为unicode时的Python问题

我有一些Python代码,可以使用工厂类方法将JSON解析为对象。在

下面是一个这样的类的示例:class Rect(object):

def __init__(self, x, y, width, height):

self.x = int(x)

self.y = int(y)

self.width = int(width)

self.height = int(height)

@classmethod

def from_dict(cls, raw_dict):

return cls(**raw_dict)

@classmethod

def from_json(cls, raw_json):

d = json.loads(raw_json)

return cls.from_dict(d)

当我传递raw时,python将JSON序列化到类中,它可以正常工作,但是如果我从Flask的web请求传入JSON(例如,从Flask的request.json)中传入JSON,那么在类实例化时会出现一个错误:TypeError: init() keywords must be strings

这是因为我从Flask请求返回的JSON都是unicode,显然{}无法理解unicode键。在

换言之,这是有效的:

^{pr2}$

但这不会:Rect.from_dict({u'y': 0, u'width': 0, u'x': 0, u'height': 0})

我的问题实际上是两部分:我应该如何解决这个问题?我是否应该尝试将所有传入的JSON表单unicode转换为字符串?或者我应该设法适应unicode?在

为什么这是个问题?Python不应该自动将unicode作为字符串进行消化吗?这个问题在Ruby这样的语言中表现出来了吗?(注意:在对this question的回答中,人们建议保持unicode,因为这是JSON规范,但显然Python不允许用unicode简单地替换字符串,否则我的代码就可以工作了。)

更新:

这个问题只在Python<=2.6中表现出来。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值