前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JSON解析-python实现

JSON解析-python实现

作者头像
py3study
发布2020-01-03 17:15:33
1.2K0
发布2020-01-03 17:15:33
举报
文章被收录于专栏:python3python3

本文从以下几个方面进行讨论: 1. JSON的基本概念 2. python解析JSON 3. 参考

1. JSON基本概念

1.1 JSON概念及特点

  • JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)
  • JSON 是轻量级的文本数据交换格式
  • JSON 独立于语言,JSON 使用 JavaScript 语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言。
  • JSON 具有自我描述性,更易理解

JSON 比 XML 更小、更快,更易解析。具体的JSON和XML的比较,可以参考博客: JSON与XML的区别比较

1.2 JSON语法规则

JSON 语法是 JavaScript 对象表示法语法的子集。

  • 数据在名称/值对中
  • 数据由逗号分隔
  • 花括号保存对象
  • 方括号保存数组

JSON的数据保存在 名称/值 对中。 名称/值对包括字段名称(在双引号中),后面写一个冒号,然后是值,例如:

“Name” : “SunPro”

JSON的值的类型有:

  • 数字(整数或浮点数)
  • 字符串(在双引号中)
  • 逻辑值(true 或 false)
  • 数组(在方括号中)
  • 对象(在花括号中)
  • null

看一个JSON和XML的示例: 表示中国部分省市数据如下

{
    "name": "中国",
    "province": [{
        "name": "黑龙江",
        "cities": {
            "city": ["哈尔滨", "大庆"]
        }
    }, {
        "name": "广东",
        "cities": {
            "city": ["广州", "深圳", "珠海"]
        }
    }, {
        "name": "中国台湾",
        "cities": {
            "city": ["台北", "高雄"]
        }
    }, {
        "name": "新疆",
        "cities": {
            "city": ["乌鲁木齐"]
        }
    }]
}

对应的XML文件

<?xml version="1.0" encoding="utf-8"?>
<country>
    <name>中国</name>
    <province>
        <name>黑龙江</name>
        <cities>
            <city>哈尔滨</city>
            <city>大庆</city>
        </cities>
    </province>
    <province>
        <name>广东</name>
        <cities>
            <city>广州</city>
            <city>深圳</city>
            <city>珠海</city>
        </cities>
    </province>
    <province>
        <name>中国台湾</name>
        <cities>
            <city>台北</city>
            <city>高雄</city>
        </cities>
    </province>
    <province>
        <name>新疆</name>
        <cities>
            <city>乌鲁木齐</city>
        </cities>
    </province>
</country>

可以看到,JSON 简单的语法格式和清晰的层次结构明显要比 XML 容易阅读,并且在数据交换方面,由于 JSON 所使用的字符要比 XML 少得多,可以大大得节约传输数据所占用得带宽。

2. python 解析JSON

python通过json库来解析JSON 使用 JSON 函数需要导入 json 库:import json。

2.1 json函数

函数

描述

json.dumps()

将 Python 对象编码成 JSON 字符串

json.loads()

将已编码的 JSON 字符串解码为 Python 对象

2.2 python和JSON解析过程中的对应关系

Decoding:

JSON

Python

object

dict

array

list

string

str

number (int)

int

number (real)

float

true

True

false

False

null

None

Encoding:

Python

JSON

dict

object

list, tuple

array

str

string

int, float, int- & float-derived Enums

number

True

true

False

false

None

null

看一下实例:

import json
data = [ { 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } ]
jsonstr = json.dumps(data, sort_keys=True, indent=4, separators=(',', ': ')) #格式化输出
print(jsonstr)
print(type(jsonstr))
jsonDe = json.loads(jsonstr)
print(jsonDe)
print(type(jsonDe))

json解析也可以使用python json模块封装的json.JSONDecoder 和 json.JSONEncoder 类 详见 https://docs.python.org/3.5/library/json.html 也可以使用第三方库:Demjson Demjson 是 python 的第三方模块库,可用于编码和解码 JSON 数据,包含了 JSONLint 的格式化及校验功能。 Github 地址:https://github.com/dmeranda/demjson 官方地址:http://deron.meranda.us/python/demjson/

Reference

  1. 百度百科-JSON
  2. W3Schol-JSON 教程
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-09-24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. JSON基本概念
    • 1.1 JSON概念及特点
      • 1.2 JSON语法规则
      • 2. python 解析JSON
        • 2.1 json函数
          • 2.2 python和JSON解析过程中的对应关系
          • Reference
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档