JSON入门教程

JSON(JavaScript Object Notation、JavaScript 对象表示法)是一种轻量级的数据交换格式。起初来源于JavaScript这门语言,后来随着使用的广泛,几乎每门开发语言都有处理JSON的API((Application Programming Interface,应用程序接口)。JSON 是存储和交换文本信息的语法,类似 XML。 JSON 比 XML 更小、更快,更易解析。

JSON(JavaScript Object Notation)是一种基于文本的标准数据交换格式,使应用程序通过计算机网络交换数据。json文件,以.json为扩展名。

json以“键值对”存储数据,先举两个简单例子直观了解一下:

var a ={"one":"一","two":"二","three":"三"}

取值方法,a.one的值就是一。

var b={"A":"[1,2,3,4,5,6,7]","B":"[a,b,c,d,e]"}

取值方法,b.A[0]的值就是1。

现在,通过一个实例的比较来真实的说明一下XML与JSON的区别:

  1. 使用XML表示中国部分省市的数据如下:
<?xml version="1.0" encoding="utf-8" ?>
<country><name>中国</name><province><name>山东</name><citys><city>青岛</city><city>临沂</city></citys>    </province><province><name>广东</name><citys><city>广州</city><city>深圳</city><city>珠海</city></citys>   </province><province><name>湖北</name><citys><city>武汉</city><city>黄冈</city></citys> </province>
</country>
  1. 使用JSON中国部分省市数据如下:

var country =

{

name: "中国",

provinces: [

{ name: "山东", citys: { city: ["青岛", "临沂"]} },

{ name: "广东", citys: { city: ["广州", "深圳", "珠海"]} },

{ name: "湖北", citys: { city: ["武汉", "黄冈"]} }

]

}

  • 从编码的可读性来说,XML有明显的优势,毕竟人类的语言更贴近这样的说明结构。而JSON读起来更像是一个数据块,读起来比较费解,不过对人读起来费解的语言,恰恰是适合机器于都的,所以通过JSON是的索引contry.provinces[0].name就可以读取到“山东”这个值
  • 从编码的手写难度来说,XML还是更简单一些,好读也就意味着好写;不过JSON写出来的字符明显就少很多;去掉空白制表以及换行的话,JSON基本上就是有用数据,而XML却包含很多重复的标记字符。

JSON语法

符号

说明

[]中括号

表示数组

{}

表示对象

:冒号

key和value之间的分隔符

,

用于分隔每一个单独的数据对象

基本数据以"键:值"对的形式出现,例如:

"name": "张三"

对象

JSON 对象使用在大括号中书写,对象可以包含多个 key/value(键/值)对两个"键:值"对以逗号分隔,例如,定义名为people对象:

"people":{

"ID": 1001,

"name": "张三",

"age": 24

}

var people={

"ID": 1001,

"name": "张三",

"age": 24

}

key必须是字符串,value可以是合法的JSON数据类型(字符串,数字,对象,数组,布尔值或者null);key和value中适用冒号(:)分割;每个键值对适用逗号(,)分割。

可以使用点号(.)来访问对象的值:people.name 代表 张三

JSON 是一种纯数据格式,它只包含属性,没有方法。

数组

JSON 数组在中括号中书写,如定义名为sites的数组:

"sites":[ "Google", "Runoob", "Taobao" ]

或var sites = [ "Google", "Runoob", "Taobao" ]

可以使用索引值来访问数组:sites[0],代表"Google"

方括号中每个数据也可以json对象形式出现,例如:

"employees":[

{"firstName":"John", "lastName":"Smith", "age":35},

{"firstName":"Jane", "lastName":"Smith", "age":32}

]

JSON 值可以是:

数字(整数或浮点数)

字符串(在双引号中)

逻辑(布尔)值(true 或 false)

数组(在中括号中)

对象(在大括号中)

Null

下面给出几个实例

在网页(html文件)的使用

在网页(html文件)使用JSON,一般是JSON和JavaScript结合使用,用JSON存数据,用JavaScript操作数据。

例1、代码如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Json测试实例</title>
</head>
<body>
<h2>通过 JSON 字符串来创建对象</h3>
<p>
First Name: <span id="fname"></span><br />
Last Name: <span id="lname"></span><br />
</p>
<script type="text/javascript">
var txt = '{"employees":[' +
'{"firstName":"Bill","lastName":"Gates" },' +
'{"firstName":"George","lastName":"Bush" },' +
'{"firstName":"Thomas","lastName":"Carter" }]}';var obj = eval ("(" + txt + ")");document.getElementById("fname").innerHTML=obj.employees[1].firstName
document.getElementById("lname").innerHTML=obj.employees[1].lastName
</script>
</body>
</html>

保存文件名为 json01.html,用浏览器打开这个页面(双击json01.html文件即可),它会生成如下所示结果:

例2、代码如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Json测试实例</title>
</head>
<body>
<h2>使用 JSON 的例子</h2>
<p id="p"> </p>
<!-- <script type="text/javascript">可简化为 <script> -->
<script type="text/javascript">
var site=[
{"name":"小明","age":8},
{"name":"小红","age":9},
{"name":"小灰","age":7},
]var str = " ";
for(var i = 0 ; i < site.length;i++){
str +="姓名:"+site[i].name +"  "+"年龄:"+site[i].age+"<br>";
}document.getElementById("p").innerHTML = str;</script>
</body>
</html>

保存为 json01.html,用浏览器打开这个页面,它会生成如下所示结果:

关于这方面的更多知识可阅读:

JSON基本用法

JSON基本用法_LPLIFE的博客-CSDN博客_json的用法

在 Python 中使用 JSON

可以使用包,如demjson、 json

Demjson包是第三方提供的包,需要下载安装; json包内置的(不需要下载安装)。

先介绍json包的使用

JSON文件的读写

使用python往data.json文件中写入数据,若文件不存在将建立

import json

data = [{

'name':'kingsan',

'age':'23'

}]

with open('data.json','w') as file:

file.write(json.dumps(data))

运行显示如下:

读取data.json文件中的数据

import json

with open('data.json','r') as file:

str = file.read()

data = json.loads(str)

print(data)

运行显示如下:

Demjson包的使用

【查看python第三方模块(库、包)是否安装及其版本号

在cmd中,输入如下的命令:

python -m pip list 或 pip list

若安装了多个python版本,查看可由X.Y指定python版本关联的模块(库、包)情况:

py -X.Y -m pip list

Python模块(库、包)安装方法

在cmd中(Windows命令行窗口中),输入如下的命令:

pip install 模块(库、包)名

若安装了多个python版本,在cmd中使用 py 启动器命令配合 -m 开关选项,为指定Python版本安装模块(库、包):

py -X.Y -m pip install 模块(库、包)名

其中X.Y代表Python版本,多余的部分舍弃如3.6.5,取3.6,3.7.4,取3.7

demjson有两个 函数

encode 将 Python 对象编码为 JSON 字符串表示。语法

demjson.decode(self, txt)

decode 将 JSON 编码的字符串解码为 Python 对象。语法

demjson.encode(self, obj, nest_level=0)

下载和安装 Demjson之后,引入demjson可使用语句:import demjson

例、

import demjson

d = {"id":"26885074","title":"叶问4:完结篇", "rate":7.0}

js_str = demjson.encode(d,encoding='utf-8')

print("encode结果:")

print(js_str)

js_str1 = "{id:'26885074',title:'叶问4:完结篇', rate:7.0}"

js_str2 = "{'id':'26885074','title':'叶问4:完结篇' , 'rate':7.0}"

js_str3 = '{"id":"26885074","title":"叶问4:完结篇", "rate":7.0}'

print("decode结果:")

data = demjson.decode(js_str1)

print(data)

data = demjson.decode(js_str2)

print(data)

data = demjson.decode(js_str3)

print(data)

参见下图:

使用Python解析JSON详解

使用Python解析JSON详解 - 落叶的博客 - 博客园

JSON入门教程(适合初学者)相关推荐

  1. 【前端实例代码】Html5+css3创建拟物风格昏昏欲睡的云朵动画网页效果~前端开发网页设计基础入门教程~适合初学者~超简单~

    b站视频演示效果: [前端实例代码]Html5+css3创建拟物风格昏昏欲睡的云朵动画网页效果!前端开发网页设计基础入门教程!适合初学者~超简单~ 效果图: 完整代码: <!DOCTYPE ht ...

  2. freemarker使用教程(适合初学者)

    freemarker在一些门户网站都会被使用到,其主要原因在于加载速度快,如果页面变动不大,可以考虑使用freemarker. freemarker相比jsp主要区别在于freemarker是单纯的数 ...

  3. python入门教程书籍-初学者最好的Python书籍

    Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 来自于BESTBOOKS 发表于 2016年9月19日 更新于 2016年9月22日 本周,我们提供一个初 ...

  4. Django----做一个简单网页的教程(适合初学者)

    这篇文字适合刚学习Django的同学,如果比较熟的就不用看了. 以下都是讲在windows上的部署情况: 准备: 1.python3.6 2.pycharm profession(专业版) 3.安装D ...

  5. SEO基础入门教程:初学者应该掌握的SEO专业术语

    原文地址:http://www.51emejx.com/seo/929.html 在SEO优化这个行业里面,有比较多的专业术语,其实这里大多数的术语都比较好理解.但是也有一小部分的术语容易让人特别是S ...

  6. autojs使用教程(适合初学者)

    autojs是什么?请百度一下.本教程基于autojs4,文末有下载连接.你需要做好以下准备: 1.一台安卓手机或者模拟器,建议安卓版本>=7.0. 2.下载好apk的安装到手机或模拟器.各大应 ...

  7. python编程入门(适合初学者)

    python编程入门 特别说明:这是早期的学习笔记,最近试用Python 3.8.1( Dec. 18, 2019),发现安装过程及基本功能差不多.或许对新手还有点用处,就未作大修改发布于此. IDL ...

  8. C语言简单入门教程(初学者用)

    简单介绍C语言 C语言数据变量的声明 整型变量的声明用int,如:int a; 单精度浮点型的声明用float,如:float b; 双精度浮点型的声明用double,如:double c; C语言基 ...

  9. stm32单片机c语言入门,STM32入门教程1,初学者入门,从零开始,使用keil建立一个简单的ST...

    本文讲述的是如何从零开始,使用keil建立一个简单的STM32的工程,并闪烁LED灯,给小白看. 第零步,当然首先你得有一个STM32的板子,其IO口上接了一个LED... 第一步,建立一个文件夹0. ...

  10. python tornado教程_Tornado 简单入门教程(零)——准备工作

    前言: 这两天在学着用Python + Tornado +MongoDB来做Web开发(哈哈哈这个词好高端).学的过程中查阅了无数资料,也收获了一些经验,所以希望总结出一份简易入门教程供初学者参考.完 ...

最新文章

  1. R语言使用ggplot2包的快速可视化函数qplot绘制分组箱图实战
  2. centOS7 Minima无法上网解决方案(Linux设置开机自动获取ip地址)
  3. 使用hive中beeline引擎来访问hive数据库
  4. 【转】《从入门到精通云服务器》第六讲—OpenStack基础
  5. python中列表,元组,字符串如何互相转换
  6. 计算机专业论文设计与实现,计算机专业论文 计算机网络的设计与实现.doc
  7. Java建立Zip压缩文件的代码实例
  8. Android利用Thread或AsyncTask进行非UI操作
  9. i7-9700与E5 2667 V2空载功耗对比
  10. android tv背景图片,android中shape绘制背景图片
  11. Java集合框架和重要接口、类
  12. 彻底卸载VMware虚拟机的详细步骤
  13. echarts 全国各省市3D图
  14. pc构件生产线及设备_PC构件生产线全套设备清单
  15. [转组第10天] | Android6.0.0_r1源码编译和POC程序的编译
  16. 面试指南(三):想跳槽,这些问题你会了吗?
  17. 网站友链交换十个标准
  18. Google全球IP地址库
  19. centos 7 无法查看IP地址,并且在登录虚拟机时就显示connected failed
  20. 基于CentOS系统的Crowd、jira和confluence的安装破解

热门文章

  1. 八爪鱼采集器使用方法
  2. 打造自己的ip代理池
  3. UI设计中图标类型指南
  4. 计算机类学术论文格式,学术论文的标准格式是什么
  5. 大学生怎样学习一门编程
  6. form表单提交中的input,button,submit
  7. 三种方法求最大子列和
  8. Android 读取U盘文件
  9. Markdown学习指南
  10. 通过FISH和下一代测序检测肺腺癌ALK基因融合比较