json数据格式说明
格式说明
- json文件由对象(集合)、数组、key/value元素组成,可以相互嵌套。
- 使用大括号包围的是对象,使用中括号包围的是数组,冒号分隔的是元素。
- 元素的key只能是字符串。
- 元素的value数据类型可以是:
- number:整数和浮点数都属于number类型,可以是正负数
- string:字符串
- bool:true/false
- array:使用中括号包围的部分是array
- object:使用大括号包围的是对象
- null:空。一般是这个值本来应该是某个object的,但是object不存在,于是为Null
 
- 对象、数组容器中每个元素之间使用逗号隔开,容器的最后一个元素不加逗号
- 顶级对象都是匿名的,也就是没有key
下面是一个json格式数据的示例:
{
	"id":1,
	"content":"hello world",
	"author":{
		"id":2,
		"name":"userA"
	},
	"published":true,
	"label":[],
	"nextPost":null,
	"comments":[
		{
			"id":3,
			"content":"good post1",
			"author":"userB"
		},
		{
			"id":4,
			"content":"good post2",
			"author":"userC"
		}
	]
}
用注释分析这个json:
{ # 对象容器,下面全是这个对象中的属性。注意key全都是字符串
	"id":1,   # 文章ID号,元素,value类型为number
	"content":"hello world",  # 文章内容
	"author":{   # 子对象,文章作者
		"id":2,   # 作者ID
		"name":"userA"    # 作者名称,注意子容器结束,没有逗号
	},
	"published":true,   # 文章是否发布,布尔类型
	"label":[],         # 文章标签,没有给标签,所以空数组
	"nextPost":null,    # 下一篇文章,是对象,因为没有,所以为null
	"comments":[     # 文章评论,因为可能有多条评论,每条评论都是一个对象结构
		{     # 对象容器,表示评论对象
			"id":3,        # 评论的ID号
			"content":"good post1",    # 评论的内容
			"author":"userB"         # 评论者
		},
		{
			"id":4,
			"content":"good post2",
			"author":"userC"
		}
	]
}
一般来说,json格式转换成语言中的数据结构时,有以下几个比较通用的规则(只是比较普通的方式,并非一定):
- json对象映射成语言中的hash/struct,有时候没有合适的结构,将映射成类。其实class、hash、struct在数据组织方式上都是一样的,都是key/value的容器
- json数组映射成语言中的列表/数组/切片
例如,上面的示例,转换成Go中的数据结构时,得到的结果如下:
// 使用名称A代替顶层的匿名对象
type A struct {
	ID        int64         `json:"id"`
	Content   string        `json:"content"`
	Author    Author        `json:"author"`
	Published bool          `json:"published"`
	Label     []interface{} `json:"label"`
	NextPost  interface{}   `json:"nextPost"`
	Comments  []Comment     `json:"comments"`
}
type Author struct {
	ID   int64  `json:"id"`
	Name string `json:"name"`
}
type Comment struct {
	ID      int64  `json:"id"`
	Content string `json:"content"`
	Author  string `json:"author"`
}
比如转换成python中的数据时,得到的结果如下:
from typing import List, Any
class Author:
    id: int
    name: str
    def __init__(self, id: int, name: str) -> None:
        self.id = id
        self.name = name
class Comment:
    id: int
    content: str
    author: str
    def __init__(self, id: int, content: str, author: str) -> None:
        self.id = id
        self.content = content
        self.author = author
# 使用了名称A代替顶层的匿名对象
class A:
    id: int
    content: str
    author: Author
    published: bool
    label: List[Any]
    next_post: None
    comments: List[Comment]
    def __init__(self, id: int, content: str, author: Author, published: bool, label: List[Any], next_post: None, comments: List[Comment]) -> None:
        self.id = id
        self.content = content
        self.author = author
        self.published = published
        self.label = label
        self.next_post = next_post
        self.comments = comments
json转代码数据结构推荐工具
quicktype工具,可以轻松地将json文件转换成各种语言对应的数据结构。
在vscode中有相关插件
- 先在命令面板中输入"set quicktype target language"选择要将json转换成什么语言的数据结构
- 再输入"open quicktype for json"就可以将当前json文件转换对应的数据结构。
json数据格式说明的更多相关文章
- XML和JSON数据格式对比
		概念 XML 扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语 ... 
- VS快速生成JSON数据格式对应的实体
		有固定好的Json数据格式,你还在手动敲对应的实体吗?有点low了!步入正题,这是一个json字符串,先去验证JSON数据格式(http://www.bejson.com/)如下: { & ... 
- jQuery EasyUI:根据数据库内容生成适合于easyui-tree的JSON数据格式
		1,jQuery EasyUI中easyui-tree特定的JSON数据格式 [ {"id":1,"text":"某公司","ch ... 
- iOS 阶段学习第22天笔记(JSON数据格式介绍)
		iOS学习(OC语言)知识点整理 一.JSON数据格式 1)概念:json是一种网络数据传输格式,有值/对象:{“A”:1,”B”:”2”…}词典:对象的序列:[,,,,,]数组两种数据类型 2)UR ... 
- JS中将JSON的字符串解析成JSON数据格式《转》
		在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式: 1.一种为使用eval()函数. 2. 使用Function对象来进行返回解析. 使用eval函数来解析,并且使用jquery的ea ... 
- JSON 数据格式
		JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.JSON采用完全独立于语言的文本格式,这些特性使JSON成为理想的数据交换语言.易于人阅读和编写,同时也易 ... 
- JSON数据格式
		JSON 数据格式 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.JSON采用完全独立于语言的文本格式,这些特性使JSON成为理想的数据交换语言.易于人 ... 
- MVC返回JSON数据格式书写方式
		返回json数据格式,多个返回值加,隔开 [Route("api/users/web")] //如果不加这个路由请这样调用:/api/users/web?schoolname=十五 ... 
- VS中快速生成json数据格式对应的实体
		JSON是一种取代XML的数据结构,和xml相比,它更小巧但描述能力却不差,由于它的小巧所以网络传输数据将减少更多流量从而加快速度. JSON就是一串字符串 只不过元素会使用特定的符号标注. {} 双 ... 
- (转)JSON数据格式和js操作json总结
		原:http://niutuku.com/tech/javaScript/273643.shtml JSON数据格式和js操作json总结 来源:niutuku.com | vince ... 
随机推荐
- Unity3D InputManager详解
			首先说一下 Input 类,这个类很常用,API 大家基本都知道,这里记录几个使用频率没那么高的 API Input.acceleration:重力加速度传感器的值,加速度的方向,适用于移动平台. I ... 
- C语言的转义字符
			原文地址:http://blog.163.com/sunshine_linting/blog/static/44893323201181325818165/ 在字符集中,有一类字符具有这样的特性:当从 ... 
- weblogic获取应用目录路径(war包)
			protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletExcepti ... 
- python列表和字符串的三种逆序遍历方式
			python列表和字符串的三种逆序遍历方式 列表的逆序遍历 a = [1,3,6,8,9] print("通过下标逆序遍历1:") for i in a[::-1]: print( ... 
- UWP关于图片缓存的那些破事儿
			看似简单的功能,实施起来却是有着一堆大坑. 按着基本功能来写吧 1.选择图片并显示到Image控件中 2.图片序列化为byte数组以及反序列化 3.本地存储与读取 1.选择图片: 逻辑就是使用File ... 
- 转 SaaS应用十大关键NFR - 第1部分
			非功能需求(SaaS的NFR)是跨越应用功能的跨越所有模块和功能的要求.这些要求深入到应用程序的架构,这是他们得到解决的地方.因此,在SaaS架构阶段之前了解这些NFR对于特定应用程序很重要,因此应用 ... 
- Python爬虫的学习经历
			在准备学习人工智能之前呢,我看了一下大体的学习纲领.发现排在前面的是PYTHON的基础知识和爬虫相关的知识,再者就是相关的数学算法与金融分析.不过想来也是,如果想进行大量的数据运算与分析,宏大的基础数 ... 
- MyBatis逆向工程自动生成代码
			MyBatis逆向工程根据数据库表自动生成mapper.xml,entity类,mapper类,简直不要 太方便好嘛 下面贴上关键配置代码,以免以后找不到 generator.xml <?xml ... 
- MySQL--Insert Buffer
			在进行数据插入时,需要将数据插入到聚集索引和非聚集索引中,而对于非聚集索引,需要先确定数据要插入的索引页,再将索引页加载到内存中进行修改,而在业务上很难保证插入数据在非聚集索引上也是连续的,因此插入操 ... 
- WEB站点服务器安全配置
			WEB站点服务器安全配置 本文转自:i春秋社区 // 概述 // 熟悉网站程序 // 更改默认设置的必要性 // 目录分析与权限设置技巧 // 防止攻击其他要素 // 公司官网不可忽视的安全性 ... 
