JavaScript Object Notation,js对象简谱,一种轻量级数据交换格式。
欧洲计算机协会制定的JS编程规范,2005-2006年开始推广。
1、对象格式
- 一个对象由一个大括号表示
- 括号中描述对象属性,通过键值对来描述对象属性
- 键与值之间用冒号连接,多个键值对之间用逗号分隔;
- 键值对中的键应该使用引号引住(通常Java中键值对中键不使用引号会报错,而JS中能够正确解析)
- 键值对中的值,可以是JS中的任意数据
JSON:
{
"name":"金苹果",
"info":"种苹果"
}
XML:
<apple>
<name>"金苹果"</name>
<info>"种苹果"</info>
</apple>
JS:
var apple={};
apple.name="金苹果";
apple.info="种苹果";
JAVA:
Apple apple=new Apple();
apple.setName="金苹果";
apple.setInfo="种苹果";
2、数组格式
{
"age": 10,
"courses": [
"语文",
"数学",
"英语"
],
"name": "张三"
}
3、JAVA与JSON转换
4、Gson
最新jar包获取:https://github.com/google/gson
4.1 将对象转为json字符串。
4.2 将json字符串转为对象。
- 引入jar包:gson-2.8.6.jar
- 生成Gson对象,并调用方法fromJSON():对象=new Gson().fromJSON(JSON字符串,对象类型.class);
- 如果字符串中包含数组,会转换成为ArrayList集合。
//对象转为JSON字符串
Student s1=new Student("张三",10, new String[]{"语文","数学","英语"});
String s = new Gson().toJson(s1);
System.out.println(s);
//JSON字符串转为对象
String ana="{\"name\":\"张三\",\"age\":10,\"courses\":[\"语文\",\"数学\",\"英语\"]}";
Student student = new Gson().fromJson(ana, Student.class);
//对象中的数组转换回来变成了ArrayList
List<String> courses= Arrays.asList(student.getCourses());
System.out.println(courses.get(0));
5、FastJson
最新jar包获取:https://github.com/alibaba/fastjson
5.1 将对象转为json字符串
- 引入jar包:fastjson-1.2.70.jar
- 调用静态方法toJSONString():String jsonString=JSON.toJSONString(对象);
5.2 将json字符串转为对象
- 引入jar包:fastjson-1.2.70.jar
- 调用静态方法parseObject()或者parseArray():
类型 对象名=JSON.parseObject(JSON字符串,类型.class);
List<类型> 对象名称=JSON.parseArray(JSON字符串,类型.class);
//对象转为JSON字符串
Student s1=new Student("张三",10, new String[]{"语文","数学","英语"});
String jsonString = JSON.toJSONString(s1);
System.out.println(jsonString);
//JSON字符串转为对象
String s="{\"age\":10,\"courses\":[\"语文\",\"数学\",\"英语\"],\"name\":\"张三\"}";
Student student = JSON.parseObject(s, Student.class);
System.out.println(student.getAge());
//对象中的数组转换回来变成了ArrayList
List<String> stringList= Arrays.asList(student.getCourses());
System.out.println(student.getCourses().getClass());
System.out.println(stringList.get(0));