luoxuepiao 发表于 2015-11-30 14:21:34

Python中的json操作

Python中的json操作
  标签(空格分隔): python 编码 json

字符串前缀问题
  字符串前缀可以有r,u
  r:表示原始(raw)字符串,比如'\n'不会被转义。常用于正则。
  u:表示unicode字符串。
  python3系列的字符串默认是unicode,无需用u进行转码。我用的是python2.7,所以还是要手动处理编码。
  发生问题的一个场景是:从某个url抓取json格式数据,import了python自带的json或simplejson包,调用其loads()方法后,得到的对象(字典)的key的类型是unicode,形如:
  

obj={  u'name':'chris',
  u'age':22
  
}
  

  而我当前的一个函数,传入参数为一个dict字典,用它生成为sql语句,带着u的insert语句插入数据库会报错。需要去除u。
  带u是unicode类型,不带u的是字符串类型。对于一个unicode变量,可以用encode()函数转为str类型。但是现在有一整个字典的key都要转换,我不知道怎么转换。
  一个解决方法是重写一个json构建/解析的函数。我并不想重复造轮子,只是python2.7下json和simplejson两个包太难用。尝试了各种参数,还是无法得到key为str类型而不是unicode类型的结果。
  我传给你的是ascii编码的对象,为什么不能返还给我一个ascii编码的对象?果断自己写一个好用的。

一个简陋的json构建/解析实现
  

          dumps(序列化)  ------------------->
  obj                        str
  对象                     字符串

  
页: [1]
查看完整版本: Python中的json操作