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)) # 输出"中国"
  • 相关阅读:
    Ajax XMLHttpRequest对象的三个属性以及open和send方法
    去空格
    绑定事件中 如可控制函数的执行次数
    我之理解---计时器setTimeout 和clearTimeout
    关于border边框重叠颜色设置问题
    YbtOj练习:二分5 飞离地球
    YbtOj练习:二分4 分割矩阵
    YbtOj练习:二分3 攻击法坛
    YbtOj练习:贪心3 最优密码
    YbtOj练习:二分2 最小时间
  • 原文地址:https://www.cnblogs.com/xiaohai2003ly/p/8617606.html
Copyright © 2011-2022 走看看