JSON 学习笔记
原创编写: 王宇
2016-11-09
JSON 学习笔记
JSON 是如何存储信息
基本语法
JSON 数据类型
JSON Schema
JSON 同 XML 比较
环境
JSON 同 Java 实体的对比
Java 中形成JSON
Java 中解析JSON
参考
JSON 是如何存储信息
基本语法
JSON 数据类型
JSON Schema
JSON 同 XML 比较
环境
JSON 同 Java 实体的对比
Java 中形成JSON
Java 中解析JSON
参考
JSON 是如何存储信息
{
"book":[
{
"id":"01",
"language":"Java",
"edition":"third",
"author":"Herbert Schildt"
},
{
"id":"07",
"language":"C++",
"edition":"second",
"author":"E.Balagurusamy"
}
]
}
基本语法
- 语法
- Data is represented in name/value pairs. (key value模式)
- Curly braces hold objects and each name is followed by ‘:’(colon), the name/value pairs are separated by , (comma).(key value 分号分开)
- Square brackets hold arrays and values are separated by ,(comma). (逗号分开每个Key Value)
- 数据结构
- {} 集合(Collection) or 对象(Object)
- [] 数组 (Array)
JSON 数据类型
Number | double- precision floating-point format in JavaScript |
String | double-quoted Unicode with backslash escaping |
Boolean | true or false |
Array | an ordered sequence of values |
Value | it can be a string, a number, true or false, null etc |
Object | an unordered collection of key:value pairs |
Whitespace | can be used between any pair of tokens |
null | empty |
JSON Schema
- Schema
当我们在描述 文字链接 的时候,需要约定数据的组织方式,比如,需要知道有哪些字段,这些字段的取值如何表示等,这就是 JSON Schema 的来源。 -
用途
- 用于描述数据结构
- 用于构建人机可读的文档
- 用于生成模拟数据
- 用于校验数据,实现自动化测试
-
关键字
$schema | The $schema keyword states that this schema is written according to the draft v4 specification. |
title | You will use this to give a title to your schema. |
description | A little description of the schema. |
type | The type keyword defines the first constraint on our JSON data: it has to be a JSON Object. |
properties | Defines various keys and their value types, minimum and maximum values to be used in JSON file. |
required | This keeps a list of required properties. |
minimum | This is the constraint to be put on the value and represents minimum acceptable value. |
exclusiveMinimum | If “exclusiveMinimum” is present and has boolean value true, the instance is valid if it is strictly greater than the value of “minimum”. |
maximum | This is the constraint to be put on the value and represents maximum acceptable value. |
exclusiveMaximum | If “exclusiveMaximum” is present and has boolean value true, the instance is valid if it is strictly lower than the value of “maximum”. |
multipleOf | A numeric instance is valid against “multipleOf” if the result of the division of the instance by this keyword’s value is an integer. |
maxLength | The length of a string instance is defined as the maximum number of its characters. |
minLength | The length of a string instance is defined as the minimum number of its characters. |
pattern | A string instance is considered valid if the regular expression matches the instance successfully. |
JSON 同 XML 比较
- 冗长(Verbose)
XML 比JSON 有过多的冗长因素,JSON对于程序员更容易编写 - 数组的使用
XML 结构化数据,没有JSON 的数组 - Parsing
JavaScript’s eval method parses JSON. When applied to JSON, eval returns the described object.
环境
下载配置 json-simple.jar , 在CLASSPATH中指向此包
JSON 同 Java 实体的对比
string | java.lang.String |
number | java.lang.Number |
true,false | java.lang.Boolean |
null | null |
array | java.util.List |
object | java.util.Map |
Java 中形成JSON
- 例子
import org.json.simple.JSONObject;
classJsonEncodeDemo{
publicstaticvoid main(String[] args){
JSONObject obj =newJSONObject();
obj.put("name","foo");
obj.put("num",newInteger(100));
obj.put("balance",newDouble(1000.21));
obj.put("is_vip",newBoolean(true));
System.out.print(obj);
}
}
- 输出结果
{"balance":1000.21,"num":100,"is_vip":true,"name":"foo"}
Java 中解析JSON
- 例子
import org.json.simple.JSONObject;
import org.json.simple.JSONArray;
import org.json.simple.parser.ParseException;
import org.json.simple.parser.JSONParser;
classJsonDecodeDemo{
publicstaticvoid main(String[] args){
JSONParser parser =newJSONParser();
String s ="[0,{\"1\":{\"2\":{\"3\":{\"4\":[5,{\"6\":7}]}}}}]";
try{
Object obj = parser.parse(s);
JSONArray array =(JSONArray)obj;
System.out.println("The 2nd element of array");
System.out.println(array.get(1));
System.out.println();
JSONObject obj2 =(JSONObject)array.get(1);
System.out.println("Field \"1\"");
System.out.println(obj2.get("1"));
s ="{}";
obj = parser.parse(s);
System.out.println(obj);
s ="[5,]";
obj = parser.parse(s);
System.out.println(obj);
s ="[5,,2]";
obj = parser.parse(s);
System.out.println(obj);
}catch(ParseException pe){
System.out.println("position: "+ pe.getPosition());
System.out.println(pe);
}
}
}
- 输出结果
The2nd element of array
{"1":{"2":{"3":{"4":[5,{"6":7}]}}}}
Field"1"
{"2":{"3":{"4":[5,{"6":7}]}}}
{}
[5]
[5,2]
参考
Useful Links on JSON
Site on JSON - JSON’s Official site giving link on JSON specification, news, update etc.
http://www.json.org/
The JavaTM Tutorials -The Java Tutorials are practical guides for programmers who want to use the Java programming language to create applications.
http://docs.oracle.com/javase/tutorial/index.html
JSON - JSON at Wikipedia, the free encyclopedia
https://en.wikipedia.org/wiki/JSON
Free Java Download - Download Java for your desktop computer now!
https://www.java.com/en/download/
相关推荐
### JSON学习笔记:深入了解JSON与Spring框架中的初始化机制 #### JSON简介 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它以其简洁性和易读性而著称,不仅适用于人眼阅读,也便于机器解析和...
在本文档《json 学习笔记_***.pdf》中,主要介绍了在Java开发中,如何使用三个常用的JSON处理工具:struts json,json_lib,jackson-mapper。同时,也提到了在使用这些工具时可能遇到的一些常见错误及其处理方法。 ...
### JSON学习笔记:深入理解与应用 #### 一、JSON简介与重要性 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它基于ECMAScript的一个子集,采用...
### WCF返回JSON学习笔记 #### 一、WCF与JSON简介 - **WCF (Windows Communication Foundation)**:是微软开发的一个框架,用于构建服务导向的应用程序。它提供了多种通信协议的支持,包括HTTP、TCP等,并且支持...
### JavaScript 数组对象 JSON 学习笔记 #### 一、JavaScript 数组操作 在 JavaScript 中,数组是一种常用的数据结构,用于存储多个值。本部分主要介绍如何创建数组、访问数组元素以及对数组进行各种操作。 #####...
在这个“json学习笔记、jackson的jar包”中,我们可以深入探讨JSON和Jackson的相关知识点。 1. JSON基本概念: - JSON是一种文本格式,易于人阅读和编写,同时也易于机器解析和生成。 - JSON数据结构主要由对象...
这篇"JSON学习笔记"可能涵盖了以下几个关键知识点: 1. JSON的基本结构:JSON数据由键值对(key-value pairs)组成,键和值之间用冒号隔开,键值对之间用逗号分隔。键必须是字符串,而值可以是字符串、数字、布尔值...
### Ajax & Json 学习笔记 #### 一、Ajax 简介 ##### 1.1 Ajax 概念 **Ajax**(Asynchronous Javascript + XML) 是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量的数据交换,Ajax 可以使网页实现...
这篇学习笔记将深入探讨这两种数据结构的特性和用法。 首先,我们来了解JavaScript中的数组对象。数组是一种有序的数据集合,可以存储任意类型的数据,包括数字、字符串、对象等。在JavaScript中,数组是对象的一种...
### JSON学习笔记 #### JSON与XML的对比 随着互联网技术的发展,数据交换成为了现代软件开发中的重要环节之一。为了满足不同场景下的需求,多种数据交换格式应运而生,其中最为人熟知的就是XML(可扩展标记语言)...
这个学习笔记主要围绕`json-lib`的使用方法和关键特性进行阐述。 首先,`json-lib`支持多种Java对象到JSON的转换,包括基本类型、数组、集合、Map以及自定义的Java类。例如,你可以通过以下方式将一个HashMap转换为...
本篇学习笔记将深入探讨Jackson框架的核心概念和使用方法,帮助你轻松应对JSON与Java对象之间的转换。 1. Jackson简介 Jackson是由FasterXML团队开发的一个开源项目,其主要目标是提供高性能、高效率的JSON处理功能...
JS基础学习笔记-JSON
3. JSON对象与JSON数组的创建:学习笔记可能介绍如何使用JSON-lib创建JSON对象和数组。例如,你可以通过`net.sf.json.JSONObject`和`net.sf.json.JSONArray`类来实现。 4. Java对象转换为JSON:JSON-lib提供了`...
《xStream完美转换XML、JSON》学习笔记 在IT领域,数据交换是常见的需求,而XML和JSON作为两种广泛使用的数据格式,它们之间的转换尤为重要。xStream是一个强大的Java库,它能够轻松地将Java对象序列化为XML或反...
根据提供的文件内容,以下是对Go语言学习笔记的详细知识点阐述。 Go语言是Google开发的一种静态类型、编译型、并发型,并具有垃圾回收功能的编程语言。它由Robert Griesemer、Rob Pike和Ken Thompson于2007年9月...
在这个学习笔记中,我们将深入探讨如何在Spring MVC中处理JSON格式的数据,包括输入和输出。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛应用于前后端数据传输。 1. **JSON格式简介** ...
Go语言学习笔记.pdf 共174页 Go语言学习笔记.pdf 共174页是一本关于Go语言的详细学习笔记,涵盖了Go语言的基础知识、函数、数组、Maps、Structs、接口、并发、程序结构、标准库等方面的内容。本笔记共分为三大部分...