json可以是json对象,也可以是json数组,数组又分为普通数组和对象数组。
以前端操作为展示:
1、json定义对象的格式:(花括号表示对象)
var 变量名={“键1”:值1,“键2”:值2,…}
//获取值的方式:变量名.键名
2、json定义数组的格式:(中括号表示数组)
第一种:普通的数组:var 变量名=[值1,值2,值3,…]
第二种:对象数组:
var 数组名称=[{“键1”:值1,“键2”:值2},{},{}…];
一个常见的java使用实例:
package com.james;
import com.google.gson.annotations.SerializedName;
import java.util.List;
public class Book {
public Book(){}
private String id;
/**
* @SerializedName(value = “bookName”,alternate = {“Name”,“bn”})表示在反序列化时候可以使用bookName,Name,bn都可以被识别到,set到Book中的name属性;相应的在序列化的时候,name属性会被序列化为bookName字符串;
*/
@SerializedName(value = "bookName",alternate = {"Name","bn"})
private String name;
private List<Book> bookList;
private String[] args;
public Book(String id, String name) {
this.id = id;
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<Book> getBookList() {
return bookList;
}
public void setBookList(List<Book> bookList) {
this.bookList = bookList;
}
public String[] getArgs() {
return args;
}
public void setArgs(String[] args) {
this.args = args;
}
}
package com.james;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonObject;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
public class TestGson {
public static void main(String[] args) {
Gson gson = new GsonBuilder().setPrettyPrinting().create();
Book book = new Book("1", "《深入Java虚拟机》");
List<Book> books = new ArrayList<>();
books.add(new Book("1", "《深入Java虚拟机》"));
books.add(new Book("2", "《OpenCV进阶》"));
books.add(new Book("3", "《深入Android源代码》"));
book.setBookList(books);
String[] strs = new String[]{"《深入Java虚拟机》", "《Android插件编程》", "《OpenCV全解》"};
book.setArgs(strs);
String str = gson.toJson(book);
System.out.println(str);
}
}
输出结果:
{
"id": "1",
"bookName": "《深入Java虚拟机》",
"bookList": [
{
"id": "1",
"bookName": "《深入Java虚拟机》"
},
{
"id": "2",
"bookName": "《OpenCV进阶》"
},
{
"id": "3",
"bookName": "《深入Android源代码》"
}
],
"args": [
"《深入Java虚拟机》",
"《Android插件编程》",
"《OpenCV全解》"
]
}
类库选择
Java中并没有内置JSON的解析,因此使用JSON需要借助第三方类库。
下面是几个常用的 JSON 解析类库:
- Gson: 谷歌开发的 JSON 库,功能十分全面。
这里有两个对象,JsonObject,Gson
- FastJson: 阿里巴巴开发的 JSON 库,性能十分优秀。
这里有三个对象,JSON,JSONObject,JSONArray,后面两个是JSON的子类。
- Jackson: 社区十分活跃且更新速度很快。
这里有ObjectMapper对象
参考链接:
https://zhuanlan.zhihu.com/p/65224789
https://www.cnblogs.com/lone5wolf/p/10940869.html