由于Java(最新LTS版本是Java11)内置中没有支持JSON转换和解析的库, 我们需要使用第三方库.
常用的库有谷歌的Gson, 阿里的Fastjson, 谷歌开发人员fangyidong的json-simple等.
这是它们的github链接, 可以在download里下载最新的jar包:
其使用方法都大同小异, 在国内开发用得比较多的是Fastjson, 以下是它的使用简单举例:
package net.csdn.blog.java.json;
import com.alibaba.fastjson.JSON;
import java.util.List;
/**
* 阿里巴巴fastjson使用简单举例
*/
public class FastjsonExamples {
public static void main(String[] args) {
Book book = new Book(12345,"书名","简介");
//举例1:如何把对象转换为JSON
String json = JSON.toJSONString(book);
System.out.println(json); //输出:{"id":12345,"info":"简介","name":"书名"}
//举例2:如何把JSON转换为对象
//假设有JSON字符串: {"id":100,"name":"唐诗三百首","info":"文化学习"}
Book newBook = JSON.parseObject("{\"id\":100,\"name\":\"唐诗三百首\",\"info\":\"文化学习\"}", Book.class);
System.out.println(newBook.getName()); //输出:唐诗三百首
//举例3:如何把JSON转换为集合
//假设有JSON字符串:["张三","李四","王二"]
List<String> strings = JSON.parseArray("[\"张三\",\"李四\",\"王二\"]", String.class);
for (String s: strings) {
System.out.print(s + " "); //输出:张三 李四 王二
}
}
static class Book {
private int id;
private String name;
private String info;
public Book() { }
public Book(int id, String name, String info) {
this.id = id;
this.name = name;
this.info = info;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
@Override
public String toString() {
return "Book{" +
"id=" + id +
", name='" + name + '\'' +
", info='" + info + '\'' +
'}';
}
}
}
注意事项:
1) 在Java中JSON的标签必须加双引号, 比如 {"id":12345,"name":"书名"}, 如果id和name不加双引号的话会解析出错
2) 如果用getClass()方法去查看上面的JSON.parseArray()的结果, 会发现是一个ArrayList.