一.json定义
json是当今较为广泛使用的数据传输格式。优势在于 :简洁和清晰的层次结构,易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。json与开发语言无关并且是轻量级的,是javascript Object Notation的简称。
二.简单json示例
{
"name" : "王小二",
"age" : 25.2,
"birthday" : "1990-03-05",
"school" : "蓝翔",
"major" : ["理发", "挖掘机"],
"has_girlfriend" : false,
"car" : null,
"house" : null,
"comments" : "这是一个注释"
}
代表了一个对象,并且是k/v的存储(键值对存储,且键必须是下述数据类型中基本类型中的string类型)
三.json中不同的数据表示
主要分两大类:1.数据结构 2.基本类型
1.数据结构中包括Object与Array两种类型
Object :包含键值对,key必须是string类型(双引号括起来的字符串),value为任意数据类型包括Object以及后面所提到的Array类型和基本类型。例:上述整个简单json示例
Array :望文生义,与java中的数组含义类似,但表达形式不同。使用中括号括起来,逗号分隔,例:["理发"', "挖掘机"]
2.基本类型
string,number,true,false,null
需要特别注意的是json格式中 number,不分int float double 数据类型,string为字符串,true,false为布尔变量,null为空对象
四.json库和gson库和commons-io库资源下载
https://pan.baidu.com/s/1-NQ7_8sEih4DRdFPpmxxrw
密码:27nj
五.json库创建json对象(JSONObject)代码示例
共有三种方式创建json对象:
1.创建空的JSONObject,调用其put方法赋于键值对
2.将键值对用Map封装,并作为JSONObject的构造器参数传入
3.使用初始化后的Bean作为JSONObject构造器参数传入
package json;
import java.util.HashMap;
import java.util.Map;
import org.json.*;
import bean.DiaoSi;
//{
// "name" : "王小二",
// "age" : 25.2,
// "birthday" : "1990-01-01",
// "school" : "蓝翔",
// "major" : ["理发","挖掘机"],
// "has_girlfriend" : false,
// "car" : null,
// "house" : null,
// "comments" : "这是一个注释"
//}
public class JsonObjectSample {
public static void main(String[] args) {
jsonObject();
createJsonByMap();
createJsonByBean();
}
/**
*
* void
*/
private static void createJsonByMap() {
// TODO Auto-generated method stub
Map<String, Object> wang = new HashMap<>();
Object nullObject = null;
wang.put("name", "王小二");
wang.put("age", 25.2);
wang.put("birthday","1990-10-1");
wang.put("major", new String[] {"理发", "挖掘机"});
wang.put("has_girlfriend",false);
// 存在二义性 null 需要创建一个对象来跳过编译器的检查
// wang.put("car", null);
wang.put("car", nullObject);
wang.put("house", nullObject);
// put 同一键 产生替代效果
wang.put("comment", "这是一个注释");
System.out.println(new JSONObject(wang).toString()