zoukankan      html  css  js  c++  java
  • Python之json编码

    一、json
    JSON: JavaScript Object Notation(JavaScript 对象表示法)
    JSON 是存储和交换文本信息的语法
    1、json轻量级:语法规则
    JSON 语法是 JavaScript 对象表示法语法的子集。
    (1)数据在名称/值对中
    (2)数据由逗号分隔
    (3)一个花括号表示一个对象
    (4)[]数组,可以存放多个对象
    (5)字符串使用双引号
     
    二、Python类型与json类型转换
    1、把python的数据,转换为json格式
    json.dumps(data,sort_keys=True,indent=4,separators=(',',':'),skipkeys=True,ensure_ascII=False)
    sort_keys默认是false。是否按字典排序(a到z)输出:True(按字典排序)
    indent:每个value对前面空4格显示
    separators:使用制定的字符替换,参数的作用是去掉逗号“,”和分号“:”后面的空格
    skipkeys:把有错误的数据忽略掉
    ensure_ascii:默认是True:字符之外的显示为u4e2du56fd
     
    2、json解码:把json格式,转换成为python格式
    json.loads()
    json的object类型-----Python的dict类型
    json的array类型------Python的list类型
     
    import json
    data = [{'a':'A','b':(2,4),'c':3.0,'d':None,'e':True}]
    print data
    dataJson = json.dumps(data,sort_keys=True,separators=(',',':'),indent=4,skipkeys=True)
    print dataJson
     
    print json.loads(dataJson)
     
    3、编码过程中,Python中的list和tuple都被转化成json的数组,而解码后,json的数组最终被转化成Python的list的,无论是原来是list还是tuple。
     
    三、序列化和反序列化
    1、把python的类对象转换为json格式:使用dumps()函数中的default参数
    import json
    class Employee(object):
    def __init__(self,name,age,sex,tel):
    self.name = name
    self.age = age
    self.sex = sex
    self.tel = tel
    # 将序列化函数定义到类里面
    def objJson(self):
    return {
    'name':self.name,
    'age':self.age,
    'sex':self.sex,
    'tel':self.tel
    }
     
    e1 = Employee('andy','24','male','131xxxxxxxx')
    print json.dumps(e1,default=e1.objJson)
     
    #另一个更简单的方法
    e1=Employee('andy','24','male','131xxxxxxxx')
    # print json.dumps(e1,default=e1.objJson)
    print json.dumps(e1.__dict__)
    通常class及其实例都会有一个__dict__属性(除非类中添加了__slots__属性),它是一个dict类型,
    存储的是类或类实例中有效的属性。
     
    2、Json反序列化为类对象
    json串反序列化成类对象或类的实例,使用的是loads()方法中的object_hook参数来实现。
    json.loads(data,object_hook=jsonToClass)
     
    class Employee(object):
    def __init__(self,name,age,sex,tel):
    self.name = name
    self.age = age
    self.sex = sex
    self.tel = tel
    def objJson(self,obj_instance):
    return {
    'name':obj_instance.name,
    'age':obj_instance.age,
    'sex':obj_instance.sex,
    'tel':obj_instance.tel
    }
     
    e1 = Employee('andy','24','male','131xxxxxxxx')
    print json.dumps(e1.__dict__)
    #fucn(e1)
    print e1.__dict__
     
    def jsonToClass(dictVar):
    return Employee(dictVar['name'],dictVar['age'],dictVar['sex'],dictVar['tel'])
    jsonDate = {"age": "24", "tel": "131xxxxxxxx", "name": "andy", "sex": "male"}
    e = json.loads(jsonDate,object_hook=jsonToClass)
    print e
    print e.name
     
    四、
    Python类型                 JSON字符串类型
    dict                             object
    list, tuple                    array
    str, unicode               string
    int, long, float            number
    True                          true
    False                        false
    None                        null
  • 相关阅读:
    CCLayerColor 用法
    数据存储的常见方式
    rand() 和arc4random()到底应该如何取舍呢
    Cocos2d 中对图片的各种操作
    objectivec 解压缩zip
    设置IE浏览器默认的下载路径
    设置浏览器主页
    得到所有本机上安装的软件名
    取消快捷方式中的箭头图标
    查看本机服务
  • 原文地址:https://www.cnblogs.com/emily-qin/p/8022303.html
Copyright © 2011-2022 走看看