zoukankan      html  css  js  c++  java
  • Python json

    JSON表示出来是一串字符串,可以被所有语言读取,也可以方便存储和传输

     JSON表示的对象就是JavaScript语言的对象

    JSON和Python 数据类型对应

    JSON类型Python类型
    {} dict
    [] list
    "string" str
    1234.56 int或float
    true/false True/False
    null None

    把Python对象变成JSON字符串:json.dumps()

    d = dict(name='sandy', age=20, score=18)
    print(json.dumps(d))

    ==》{"name": "sandy", "age": 20, "score": 18}

    把Python对象编程JSON字符串,并写入到文件: json.dump()

    path = 'D:\test.txt'
    with open(path, 'w') as f:
    json.dump(d, f)

     Python的dict对象可以直接序列化为JSON对象,但是如果是class对象, 不能直接序列化成JSON字符串,需要一些转换:

    可以写一个函数来实现,返回值是JSON的字符串,如:

    def stu2dict(std):
    return{
    'name': std.name,
    'age': std.age,
    'score': std.score
    }

    也可以调用class的dict属性:

    json.dumps(s, default=lambda obj: obj.__dict__)   # s是实例化的对象

    class Student(object):
    def __init__(self, name, age, score):
    self.name = name
    self.age = age
    self.score = score
    def stu2dict(std):
    return{
    'name': std.name,
    'age': std.age,
    'score': std.score
    }
    s = Student('sandy', 12, 80)
    print(json.dumps(s, default=stu2dict)) # {"name": "sandy", "age": 12, "score": 80}
    print(json.dumps(s, default=lambda obj: obj.__dict__)) # {"name": "sandy", "age": 12, "score": 80}

    对中文进行序列化的时候,参数 ensure_ascii=False

    print(json.dumps('中国', ensure_ascii=True))  # 输出"u4e2du56fd"
    print(json.dumps('中国', ensure_ascii=False)) # 输出"中国"
  • 相关阅读:
    MySQL Replication主从复制
    使用Amoeba 实现MySQL DB 读写分离
    Amoeba For MySQL入门:实现数据库水平切分
    11条理由告诉你,为什么你的网站不卖座
    很有用的观察者设计模式
    Apache + Tomcat集群配置详解 (1)
    Nginx+tomcat配置负载均衡
    JSON-RPC轻量级远程调用协议介绍及使用
    nginx的upstream目前支持5种方式的分配
    rpc远程过程协议调用
  • 原文地址:https://www.cnblogs.com/xiaohai2003ly/p/8617606.html
Copyright © 2011-2022 走看看