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学习笔记,你的必选哦,与大家共享,一起进步
JavaScript数组对象JSON学习笔记,推荐
json学习笔记、jackson的jar包、核心代码段。
Ajax,Json的学习笔记
JSON入门学习笔记,对初学者很有帮助!
WCF,json
本人学习 json总结希望 可以 给各位朋友 点 帮助
介绍了json的三个工具struts json,json_lib, jackson-mapper 的使用方法和一些常见错误处理
NULL 博文链接:https://rogerfederer.iteye.com/blog/783714
json-lib 学习笔记 json-lib json
JSON我就要来了
Ajax&Json笔记,非常适合新手入门学习
JS基础学习笔记-JSON
NULL 博文链接:https://xuxiheng.iteye.com/blog/2233774
extJs 2.1学习笔记 此资料收集于网上.. 1. ExtJs 结构树 2 2. 对ExtJs的态度 3 3. Ext.form概述 4 4. Ext.TabPanel篇 5 5. Function扩展篇 7 6. Ext.data.Store篇 10 7. Ext.data.JsonReader篇一 12 8. Ext.data....
通过Ajax获取JSON数据以我之前写的与用户交互的动态清单列表为例,现在把模型中的数据单独写成一个JSON文件,再通过发起Ajax请求的方式获取JSON数据。这样,清单列表中的数据项就都是通过JSON数据来获取的了。
ExtJs学习笔记,共30讲 1. ExtJs 结构树 2 2. 对ExtJs的态度 3 3. Ext.form概述 4 4. Ext.TabPanel篇 5 5. Function扩展篇 7 6. Ext.data.Store篇 10 7. Ext.data.JsonReader篇一 12 8. Ext.data.JsonReader篇二 15 ...