Python Json使用()

  本篇文章为你整理了Python Json使用()的详细内容,包含有 Python Json使用,希望能帮助你了解 Python Json使用。

  本篇主要介绍一下 python 中 json的使用 如何把 dict转成json 、object 转成json 、以及json转成对象 等等。。

  json是非常常用的一种数据格式,比如在前后端分离的 web开发中,返回给前端 通常都会使用json ,那么来看看 python 中如何玩转json

  1.dict 转成 json (json.dumps(dict))

  注意: ensure_ascii=False 否则中文乱码

  

import json

 

   student = {

   name: johnny,

   age: 27,

   address: 无锡

   print(json.dumps(student, ensure_ascii=False))

  # {"name": "johnny", "age": 27, "address": "无锡"} json

  

 

  2.json 转 dict (json.loads(jsonstr))

  

import json

 

  json_student = {"name": "johnny", "age": 27, "address": "无锡"}

  print(json.loads(json_student))

  # {name: johnny, age: 27, address: 无锡} 字典dict

  

 

  3. 类对象转 json (dict属性/提供default=方法)

  3.1 错误使用

  注意:json.dumps() 不支持 直接把 类对象放进去!!! 会报错 Student is not JSON serializable

  

import json

 

  
#错误使用!!!

  print(json.dumps(student)) 报错!!! TypeError: Object of type Student is not JSON serializable

  

 

  3.2 使用类对象 dict 属性

  

#正确使用!!!

 

  print(json.dumps(student.__dict__))) #可以使用 类对象的 __dict__ 属性

  #{"name": "candy", "age": "30"}

  

 

  3.3 提供一个 convert2json 方法

  default=指定方法

  

class Student:

 

   def __init__(self, name, age):

   self.name = name

   self.age = age

   @staticmethod

   def conver2json(self):

   return {

   name: self.name,

   age: self.age

  #通过自己写一个 conver2json方法 去手动转化一下 把 类对象转成json

  print(json.dumps(student,default=Student.conver2json))

  

 

  4.json 转 类对象 (json.loads(jsonstr,object_hook=..))

  注意:json.loads 默认只会转成dict,需要自己提供方法 把dict 转成 类对象

  

import json

 

  class Student:

   def __init__(self, name, age):

   self.name = name

   self.age = age

   @staticmethod

   def conver2json(self):

   return {

   name: self.name,

   age: self.age

   @staticmethod

   def convert2object(dict):

   return Student(dict[name],dict[age])

  json_student = {"name": "johnny", "age": 27, "address": "无锡"}

  print(json.loads(json_student,object_hook=Student.convert2object))

  # __main__.Student

  

 

  5. dict/对象 转为 json文件 (json.dump(student,f))

  注意 dump 还是 只能接收 dict ,如果要把 对象写到json中 需要先把对象 转成 dict ,可以通过 ——dict——属性

  

student = {

 

   name: johnny,

   age: 27,

   address: 无锡

  with open(student.json,w) as f:

   json.dump(student,f,ensure_ascii=False)

  

 

  6. json文件转 dict /对象 (json.load)

  

with open(student.json,r) as f:

 

   print(json.load(f))

  

 

  为什么:转成json 后 name 是一个数组呢? 因为 self.name = name, 后面有一个 逗号,。。。 会把这个name当成元组 ,元组转成 json 就是 数组!!!

  

class Student:

 

   def __init__(self, name, age):

   self.name = name, #这里!!!不能有 逗号。。

   self.age = age

  
json.dumps() 只支持 dict转json 如果是 class 对象 需要 通过 dict属性或者提供default= conver2json 方法

  json.dump() 是写入 文件中

  json.loads() 只支持把 json str转成 dict ,如果要转成 class 对象 则需要提供 object_hook=convert2object方法

  json.load()/ 是从文件中读取 jsonstr 到 dict

  很简单 注意一下 class 和 json 的相互转化即可

  参考:http://www.kaotop.com/it/26500.html

  欢迎大家访问 个人博客 Johnny小屋
 

  欢迎关注个人公众号

  以上就是Python Json使用()的详细内容,想要了解更多 Python Json使用的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: