Json
1 语法格式
案例:
{
"name": "陈xx",
"age": 18,
"朋友": [
"张三",
"李四",
"王五",
"赵六",
{
"name": "王xx",
"info": "非常要好的朋友"
}
]
}
上面的案例:
1 []中括号代表的是一个数组;
2 {}大括号代表的是一个对象
3 双引号“”内表示的是属性值
4 冒号:代表的是前后之间的关系,冒号前面是属性的名称(相当于key),后面是属性的值(相当于value),这个值可以是基本数据类型,也可以是引用数据类型。
2 主流的Json包使用
2.1 基本步骤
转换JSON的步骤:
1. 导入JAR包
2. 在需要转换JSON字符串的位置使用相关类的转换方法
接下来以Book类举例:
public class Book {
private String id;
private String name;
private String info;
// 省略getset,有参无参构造
}
2.2 Gson
- 将对象转换为JSON字符串
Book b = BookDao.find();
String json = new Gson().toJson(b);
System.out.println(json);
- 将JSON字符串转换为对象
String json = "{\"id\":\"1\",\"name\":\"Java从入门到入土\",\"info\":\"?????\"}";
Book book = new Gson().fromJson(json, Book.class);
System.out.println(book);
2.3 FastJson
- 将对象转换为JSON字符串
Book b = BookDao.find();
String json = JSON.toJSONString(b);
System.out.println(json);
- 将JSON字符串转换为对象
String json = "{\"id\":\"1\",\"name\":\"Java从入门到入土\",\"info\":\"?????\"}";
Book book = JSON.parseObject(json, Book.class);
System.out.println(book);
2.4 集合类型转换
以FastJson为例:(Gson差不太多,就是只要new一个Gson对象,用这个对象就能对Json进行转换了.)
public class Demo2 {
public static void main(String[] args) {
// List 类型:
List<Book> books = new ArrayList<>();
books.add(new Book("1","小说1","不知道写的什么"));
books.add(new Book("2","小说2","看不懂"));
books.add(new Book("3","小说3","写的啥玩意"));
String json1 = JSON.toJSONString(books);
System.out.println(json1);
/*
json1:(稍微比较精简一点的格式,正常格式行数应该更多,当然在String里面是没有这种格式的)
[
{"id":"1","info":"不知道写的什么","name":"小说1"},
{"id":"2","info":"看不懂","name":"小说2"},
{"id":"3","info":"写的啥玩意","name":"小说3"}
]
*/
// JSON转换成List
List<Book> bookList = JSON.parseArray(json1,Book.class);
System.out.println(bookList);
// Map类型的转换:
Map<String,List<Book>> map = new HashMap<>();
map.put("书柜1",books);
map.put("书柜2",books);
String json2 = JSON.toJSONString(map);
System.out.println(json2);
// json转换成Map
Map bookMap = JSON.parseObject(json2,HashMap.class);
System.out.println(bookMap);
}
}