📜  Python中的JSON格式化formatting

📅  最后修改于: 2020-05-05 11:59:13             🧑  作者: Mango

缩写为JSON的Javascript对象表示法是一种轻量级的数据交换格式。它将Python对象编码为JSON字符串,并将JSON字符串解码为Python对象。

  • JSON可能最广泛地用于AJAX应用程序中Web服务器和客户端之间的通信,但不限于该问题域。
  • 例如,如果您试图构建一个令人兴奋的项目,我们需要格式化JSON输出以呈现必要的结果。因此,让我们深入研究Python提供的用于格式化JSON输出的json模块。

函数:

  • json.dump(obj,fileObj):将obj序列化为JSON格式的流到fileObj
  • json.dumps(obj):将obj序列化为JSON格式的字符串。
  • json.load(JSONfile):将JSONfile反序列化为 Python对象。
  • json.loads(JSONfile):将JSONfile(类型:字符串)反序列化为 Python对象。

  • JSONEncoder:一个编码器类,用于将Python对象转换为JSON格式。
  • JSONDecoder:一个解码器类,用于将JSON格式文件转换为Python obj。

转换基于此转换表

实现

代码
我们将使用dump(),dumps()和JSON.Encoder类。

# 代码将在Python 3中运行
from io import StringIO
import json
fileObj = StringIO()
json.dump(["Hello", "芒果"], fileObj)
print("使用json.dump(): "+str(fileObj.getvalue()))
class TypeEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, type):
            return str(obj)
print("使用json.dumps(): "+str(json.dumps(type(str), cls=TypeEncoder)))
print("使用json.JSONEncoder()。encode"+
      str(TypeEncoder().encode(type(list))))
print("使用json.JSONEncoder()。iterencode"+
      str(list(TypeEncoder().iterencode(type(dict)))))

输出:

使用json.dump(): ["Hello", "芒果"]
使用json.dumps(): ""
使用json.JSONEncoder()。encode""
使用json.JSONEncoder()。iterencode['""']

解码
我们将使用load(),loads()和JSON.Decoder类。

# 代码将在Python 3中运行
from io import StringIO
import json
fileObj = StringIO('["芒果 for 芒果"]')
print("使用json.load(): "+str(json.load(fileObj)))
print("使用 json.loads(): "+str(json.loads('{"芒果": 1, "for": 2, "芒果": 3}')))
print("使用 json.JSONDecoder().decode(): " +
    str(json.JSONDecoder().decode('{"芒果": 1, "for": 2, "芒果": 3}')))
print("使用 json.JSONDecoder().raw_decode(): " +
    str(json.JSONDecoder().raw_decode('{"芒果": 1, "for": 2, "芒果": 3}')))

输出:

使用json.load(): ['芒果 for 芒果']
使用 json.loads(): {'for': 2, '芒果': 3}
使用 json.JSONDecoder().decode(): {'for': 2, '芒果': 3}
使用 json.JSONDecoder().raw_decode(): ({'for': 2, '芒果': 3}, 34)