资讯专栏INFORMATION COLUMN

Json-path学习笔记<一>

Vicky / 3261人阅读

摘要:简介是用于结构化数据序列化的一种文本格式,包含种基础类型字符串,数字,布尔和和两种结构类型对象和数组。对象是一个由零或者多个名值对组成的无序集合,其中名值对中名是字符串类型,值则可以是字符串,数字,布尔,,对象或数组类型。

Json

JavaScript Object Notation (JSON)是一个轻量级的,基于文本的,跨语言的数据交换格式。它从ECMAScript编程语言标准(ECMAScript Programming Language Standard)衍生而来。JSON定义了一组用于表示结构化数据的可移植的格式化规则。

简介

JSON是用于结构化数据序列化的一种文本格式,JSON包含4种基础类型(字符串,数字,布尔和null)和两种结构类型(对象和数组)。
字符串是一个由零或者多个Unicode字符组成的序列。
对象是一个由零或者多个名/值对组成的无序集合,其中名/值对中名是字符串类型,值则可以是字符串,数字,布尔,null,对象或数组类型。
数组是一个由零或者多个值组成的有序序列。
JSON的设计目标是它应当是尽可能小的,可移植的,文本化的,并且可以作为JavaScript的一个子集。

JSON语法

一个JSON文本是一个标记(token)序列,标记包含6种结构字符,字符串,数字和3个字面量。

结构字符:[ 左中括号,{ 左大括号, ] 右中括号, } 右大扩号,: 冒号,, 逗号。6种结构字符前后都可以添加无意义的空白字符。如:水平制表符 ,换行符 ,回车符

字面量: false,null,true。字面量MUST是小写的,其他任何字面量都是不允许的。

对象结构表示为一对大括号包裹着0到多个键/值对(或者叫成员)。键/值对中键是一个字符串,后面是一个冒号,用来分隔键和值。值后面是一个逗号用来分隔值和下一个键/值对的键。一个对象内的键SHOULD是唯一的。

数组结构表示为一对中括号包裹着0到多个值(或者叫元素)。值之间用逗号分隔。

数字的表示和其他大部分语言相似。数字包含一个以可选的减号为前缀的整数部分,其后面可以跟有小数部分和或指数部分。八进制或者十六进制的形式是不允许的。以0开头也是不允许的。小数部分是一个小数点后跟随一位或多位数字。指数部分以不限大小写的字母E开头,之后可跟一个加号或减号。E和可选的符号后可跟一位或多位数字。不能被表示为数字的序列(例如,无穷大和NaN)的数字值是不允许的。

字符串用引号作为开头和结尾。除了以下一些必须被转义的字符以外所有的Unicode字符都可以直接被放在字符串中:引号(”或’),反斜杠()和控制字符(U+0000 到 U+001F)。

编码

JSON文本SHALL使用unicode编码。默认的编码方式为UTF-8。
由于JSON文本的头两个字符一定是ASCII字符[RFC0020],因此可以通过观察第一组4个8位字节来判断字节流是UTF-8,UTF-16(BE或LE)还是UTF-32(BE或LE)编码的。

解析器

JSON解析器可以将JSON文本转换为其他表示方法。JSON解释器MUST能接受符合JSON语法的所有文本。JSON解析器MAY能接受非JSON形式的文本。

生成器

JSON生成器能够生成JSON文本。其生成结果MUST严格符合JSON的语法。

IANA(互联网数字分配机构)方面的考虑

JSON文本的MIME媒体类型是application/json。JSON可以用UTF-8,UTF-16和UTF-32编码表示。如果使用UTF-8,则JSON是8位字节兼容的。如果是UTF-16或UTF-32,则必须使用二进制内容传输编码。

通常,脚本语言都有安全问题,JSON作为JavaScript的一个子集,但由于它排除了分配和调用,所以它是安全的。

JSON发布规范:RFC 4627

Json示例
{
   "Image": {
       "Width": 800,
       "Height": 600,
       "Title": "View from 15th Floor",
       "Thumbnail": {
           "Url": "http://www.example.com/image/481989943",
           "Height": 125,
           "Width": "100"
       },
       "tags": [
           "小清新",
           "动物"
       ]
   }
}
参考规范

[ECMA] European Computer Manufacturers Association, “ECMAScript
Language Specification 3rd Edition”, December 1999,
ecma-st/ECMA-262.pdf>.

[RFC0020] Cerf, V., “ASCII format for network interchange”, RFC 20,
October 1969.

[RFC2119] Bradner, S., “Key words for use in RFCs to Indicate
Requirement Levels”, BCP 14, RFC 2119, March 1997.

[RFC4234] Crocker, D. and P. Overell, “Augmented BNF for Syntax
Specifications: ABNF”, RFC 4234, October 2005.

原文参考:Json格式定义

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/64574.html

相关文章

  • Json-path学习笔记&lt;二&gt;

    摘要:该篇主要以代码示例为主,因为上不去,看不到这个官方文档和。因为接下来的底层默认使用的就是。和功能是一致的。区别是不会抛出异常,而会抛出异常。而解析输入的文本内容依据默认的解析文本的模式。 Json-smart 该篇主要以代码示例为主,因为google上不去,看不到Json-smart这个官方文档和API。故只例举一些代码示例。因为接下来的Json-path底层默认使用的就是JsonSm...

    Soarkey 评论0 收藏0
  • pygame学习笔记之设置字体及显示中文

      pygame作为python的一个平台库,在做游戏的时候,需要学习的内容还是比较的多的,主要涉及到的内容有相关的学习笔记,包括怎么设置字体,另外还有就是怎么设置其显示中文呢?下面就给大家详细解答下。  一、获得可用字体  importpygame   print(pygame.font.get_fonts())  结果:  ['arial','arialblack...

    89542767 评论0 收藏0
  • pygame学习笔记之设置字体及显示中文

      游戏界面,国外的一些游戏,还是以英文为主,那么,国内的游戏,大多覆盖的是中文字体。那么,我们怎么样将英文字体修改成为中文,并且能够正确的显示出来呢?下面就给大家详细解答下。  一、获得可用字体  importpygame   print(pygame.font.get_fonts())  结果:  ['arial','arialblack','bahns...

    89542767 评论0 收藏0
  • Python学习笔记

    入坑 Python自从进入公司,到现在也有半年的时间。这半年的时间从 python 到入门到开发了几个小项目,类型涵盖了web应用 程序、爬虫程序 (scrapy),python脚本工具,自动化工具。对 python 语言也越来越熟悉,当然也有所感悟和总结。首先 Python 真的让语言成 了一个工具,入门代价很小,上手能够开发出小工具,可以更快体验到编程的乐趣。但是做到pythonic需要更多的...

    社区管理员 评论0 收藏0
  • 个人AI训练云算力平台推荐

    以下是一些适合个人使用的AI训练云算力平台的推荐:Compshare:更适合国内用户使用的,高性价比云算力平台,低至1元/小时起。高性能AI算力资源,提供T4/V100S/2080Ti/3090/P40等多种配置GPU,预装TensorFlow、Pytorch、CUDA等算法框架,开机即用。Amazon EC2:亚马逊的弹性计算云服务提供了各种实例类型,包括GPU实例,适用于深度学习和机器学习任务...

    社区管理员 评论0 收藏0

发表评论

0条评论

Vicky

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<