JSON(JavaScript Object Notation)
- 【概念】一种轻量级的数据交换格式
- 【结构】
- “名称/值”对的集合(A collection of name/value pairs)。在Java中,可理解为HashMap。示例:
var json = { "name":"Jack", "age":23, "Marry":true };
- 值的有序列表(An ordered list of values)。在大部分语言中,被理解为数组(Array 或 List)。示例:
var json = [ "Jack" , "Rose" , "Tom" , 89 , true , false ];
- “名称/值”对的集合(A collection of name/value pairs)。在Java中,可理解为HashMap。示例:
Json-lib
- 【概念】一个Java类库(官网)
- 【功能】
- 转换Javabeans, maps, collection, java arrays 和 XML 成为 json 格式数据
- 转换 json 格式数据成为 javabeans 对象
- 【所需 jar 包】
- commons-beanutils-1.8.3.jarJackson
- commons-collections-3.2.1.jar
- commons-lang-2.6.jar
- commons-logging-1.1.1.jar
- ezmorph-1.0.6.jar
- json-lib-2.4-jdk15.jar
Jackson
- 【概念】处理JSON格式数据的类库
- 【特点】
- 相比json-lib所需的jar包少
- 简单易用
- 性能较好
- 【所需 jar 包】
- jackson-annotations-2.1.1.jar
- jackson-core-2.1.1.jar
- jackson-databind-2.1.1.jar
GSON
- 【概念】Google研发
- 【特点】
- 无依赖
- 不需要额外 jar 包
- 【tips】
- 【使用】
// bean 转换 json
Gson gson = new Gson();
String json = gson.toJson(object);
// json 转换 bean
Gson gson = new Gson();
String json = "{\"id\":\"2\",\"name\":\"Json技术\"}";
Book book = gson.fromJson(json,Book.class);
// json 转换复杂的 bean
Gson gson = new Gson();
String json = "[{\"id\":\"1\",\"name\":\"Json技术\"},{\"id\":\"2\",\"name\":\"java技术\"}]";
// 转换成 List
List list = gson.fromJson(json, new TypeToken<LIST>() {}.getType());
// 转换成Set
Set set = gson.fromJson(json, new TypeToken<SET>() {}.getType());
// 判断字符串是否是 json
boolean jsonFlag;
try {
new JsonParser().parse(string).getAsJsonObject();
jsonFlag = true;
} catch(Exception e) {
jsonFlag = false;
}
// 从 json 中获取属性
String propertyName = "id";
String propertyValue = "";
try {
JsonParser jsonParser = new JsonParser();
JsonElement element = jsonParser.parse(json);
JsonObject jsonObj = element.getAsJsonObject();
propertyValue = jsonObj.get(propertyName).toString();
} catch (Exception e) {
propertyValue = null;
}
// 从 json 中除去某个属性
String propertyName = 'id';
JsonParser jsonParser = new JsonParser();
JsonElement element = jsonParser.parse(json);
JsonObject jsonObj = element.getAsJsonObject();
jsonObj.remove(propertyName);
json = jsonObj.toString();
// 向 json 中添加属性
String propertyName = "age";
Object propertyValue = 12;
JsonParser jsonParser = new JsonParser();
JsonElement element = jsonParser.parse(json);
JsonObject jsonObj = element.getAsJsonObject();
jsonObj.addProperty(propertyName, new Gson().toJson(propertyValue));
String json = jsonObj.toString();
// 修改 json 中的属性
// 先remove
// 后add
// 判断 json 中是否含有属性
boolean isContains = jsonObj.has(propertyName);
// json 中日期格式处理
GsonBuilder builder = new GsonBuilder();
builder.setDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
Gson gson = builder.create();
FastJson
- 【概念】阿里开发
- 【特点】
- 无依赖
- 高性能
- 【劣势】在复杂类型的Bean转换Json上需要制定引用
- 【tips】
- 【使用】
// bean 转换成 json
// 格式化 json
JSON.toJSONString(object, true);
// 非格式化 json
JSON.toJSONString(object, false);
// json 转换成 bean
Book book = JSON.parseObject(json, Book.class);
// json 转换成复杂的 bean
// List
List list = JSON.parseObject(json, new TypeReference<ARRAYLIST>() {});
// Set
Set set = JSON.parseObject(json, new TypeReference<HASHSET>() {});
// 从 json 中获取属性
JSONObject obj = JSON.parseObject(json);
String propertyValue = obj.get(propertyName);
// 除去 json 中某个属性
JSONObject obj = JSON.parseObject(json);
Set set = obj.keySet();
String propertyValue = set.remove(propertyName);
String json = obj.toString();
// 向 json 中添加属性
JSONObject obj = JSON.parseObject(json);
obj.put(propertyName, JSON.toJSONString(propertyValue));
String json = obj.toString();
// 修改 json 中的属性
JSONObject obj = JSON.parseObject(json);
Set set = obj.keySet();
if(set.contains(propertyName)) {
obj.put(propertyName, JSON.toJSONString(propertyValue));
}
String json = obj.toString();
// 判断 json 中是否包含属性
boolean isContain = set.contains(propertyName);
// json 日期格式处理
Object obj = new Date();
String json = JSON.toJSONStringWithDateFormat(obj, "yyyy-MM-dd HH:mm:ss.SSS");
根据多篇博客整合并总结,如有侵权请联系更正