JSON是什么

本文对比分析了JSON和XML作为数据交换格式的特点,强调了JSON的轻量级优势及其在现代Web开发中的广泛应用。介绍了JSON的基本概念,包括JSON字符串、序列化与反序列化的原理,并通过Python代码示例展示了数据转换的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  JSON(JavaScript Object Notation),即javascript对象标记,但是要注意的是,JSON并不是javascript语言的一部分,事实上,它可以说是与javaScript同级,w3c同样为JSON定义了标准。目前,JSON使用范围越来越广泛,自从它出现,就不断的蚕食XML的份额,相对于XML来说,JSON是一种轻量级的数据交换格式,不需要严格的标签。JSON并不复杂,目前多数web站点都采用了JSON格式来交换数据。
下面是xml:

<?xml version="1.0" encoding="ISO-8859-1"?>

<nitf>

<head>
<title>Colombia Earthquake</title>
</head>

<body>

<headline>
<hl1>143 Dead in Colombia Earthquake</hl1>
</headline>
<byline>
<bytag>By Jared Kotler, Associated Press Writer</bytag>
</byline>
<dateline>
<location>Bogota, Colombia</location>
<date>Monday January 25 1999 7:28 ET</date>
</dateline>

</body>

</nitf>

下面是JSON:

{
"employees": [
{ "firstName":"John" , "lastName":"Doe" },
{ "firstName":"Anna" , "lastName":"Smith" },
{ "firstName":"Peter" , "lastName":"Jones" }
]
}

    对比很容易发现JSON的优势,足够轻量级,会提高交换数据效率。要弄懂JSON,必须要理解三个概念:

  1. 什么是JSON
  2. 什么是JSON字符串
  3. 序列化与反序列化

    JSON是一种轻量级的数据交换格式,即JSON本质上就是可跨平台跨语言的满足特定标准的数据。JSON的表现形式是字符串,满足JSON格式的字符串就称为JSON字符串。要注意的是,JSON并没有严格的对象概念,尽管它传入别的编程语言多数是以对象的形式传入,网上多数将JSON对象解释成JavaScript对象。

   至于什么是序列化与反序列化,这里我通过JSON在Python的应用来解释。首先,JSON数据类型在Python中是不同的,需要进行转换。默认执行以下转换:

JSONPython
objectdict
arraylist
stringstr
number(int)int
number(real)float
trueTrue
falseFalse
nullNone

序列化:把Python数据类型转换成json数据类型,反序列化:把json数据类型转换成Python数据类型,即反序列化。

# coding:utf-8
import json

json_str = '{"employees": ' \
              '[{ "firstName":"John" , "lastName":"Doe" },' \
              '{ "firstName":"Anna" , "lastName":"Smith" },' \
              '{ "firstName":"Peter" , "lastName":"Jones" }' \
              ']' \
          '}'

student = json.loads(json_str)  # 把Python数据类型转换成json数据类型,即序列化
print(student)
print(type(student))

s = json.dumps(json_str)  # 把json数据类型转换成Python数据类型,即反序列化
print(s)
print(type(s))

输出:
程序输出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值