JSON(JavaScript Object Notation)一种灵活、高效、轻量级的数据交换格式,广泛应用于各种数据交换和存储场景。
基本特点
1、简单易用:JSON格式非常简单,易于理解和使用。
2、轻量级:相比XML等其他数据格式,JSON占用的空间更小,传输效率更高。
3、跨平台:JSON是一种纯文本格式,可以轻松地在不同的系统和编程语言之间交换数据。
4、可读性强:JSON格式的数据结构清晰,易于阅读和调试。
数据结构
JSON支持两种数据结构
1、对象(Object):无序的键值对集合,用大括号 {}
包围。键必须是字符串,值可以是任意有效的JSON数据类型。
{"name": "John","age": 30,"isStudent": false,"hobbies": ["reading", "coding", "traveling"]
}
2、数组(Array):有序的值集合,用方括号 []
包围。数组中的值可以是任意有效的JSON数据类型。
["apple","banana",42,true,{"name": "Alice","age": 25}
]
在Java中使用 org.json.JSONObject
类来解析和生成JSON数据。
import org.json.JSONObject;// 解析JSON
String jsonString = "{\"name\": \"John\", \"age\": 30}";
JSONObject jsonObject = new JSONObject(jsonString);
System.out.println(jsonObject.getString("name")); // 输出: John// 生成JSON
JSONObject jsonObject = new JSONObject();
jsonObject.put("name", "John");
jsonObject.put("age", 30);
String jsonString = jsonObject.toString();
System.out.println(jsonString); // 输出: {"name":"John","age":30}
转换
fastjson
是阿里巴巴开源的一个高性能的JSON库
导入项目
1、对象或集合(内套集合也可以)转JSON对象
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;public class User {private String name;private int age;// getter 和 setter 方法
}public class JsonExample {public static void main(String[] args) {User user = new User();user.setName("John");user.setAge(30);// 对象转JSON字符串String jsonString = JSON.toJSONString(user);System.out.println(jsonString); // 输出: {"name":"John","age":30}// 对象转JSONObjectJSONObject json = new JSONObject();json.putAll(JSON.parseObject(jsonString));System.out.println(json.toJSONString()); // 输出: {"name":"John","age":30}}
}
2、JSON格式字符串与JSON对象之间的转换
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;public class JsonExample {public static void main(String[] args) {String j = "{\"goodslist\":[{\"goods_id\":1}],\"name\":\"张三\"}";// JSON字符串转JSONObjectJSONObject jsonObject = JSON.parseObject(j);System.out.println(jsonObject.toJSONString()); // 输出: {"goodslist":[{"goods_id":1}],"name":"张三"}// 或者JSONObject jsonObject2 = JSONObject.parseObject(j);System.out.println(jsonObject2.toJSONString()); // 输出: {"goodslist":[{"goods_id":1}],"name":"张三"}}
}
3、JSON字符串-数组类型与JSONArray之间的转换
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;public class JsonExample {public static void main(String[] args) {String JSON_ARRAY_STR = "[{\"studentName\":\"lily\",\"studentAge\":12},{\"studentName\":\"lucy\",\"studentAge\":15}]";// JSON字符串转JSONArrayJSONArray jsonArray = JSON.parseArray(JSON_ARRAY_STR);System.out.println(jsonArray.toJSONString()); // 输出: [{"studentName":"lily","studentAge":12},{"studentName":"lucy","studentAge":15}]}
}
4、复杂JSON格式字符串与JSONObject之间的转换
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;public class JsonExample {public static void main(String[] args) {String j = "{\"goodslist\":[{\"goods_id\":1}],\"name\":\"张三\"}";// 复杂JSON字符串转JSONObjectJSONObject jsonObject = JSON.parseObject(j);System.out.println(jsonObject.toJSONString()); // 输出: {"goodslist":[{"goods_id":1}],"name":"张三"}}
}
5、JSON字符串转JAVA对象
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;public class User {private String name;private int age;// getter 和 setter 方法
}public class JsonExample {public static void main(String[] args) {String j = "{\"name\":\"张三\",\"age\":30}";// JSON字符串转User对象User user = JSON.parseObject(j, new TypeReference<User>() {});System.out.println(user.getName()); // 输出: 张三System.out.println(user.getAge()); // 输出: 30}
}
6、JSON字符串集合转LIST对象
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;public class Goods {private int goods_id;// getter 和 setter 方法
}public class JsonExample {public static void main(String[] args) {String str = "[{\"goods_id\":1},{\"goods_id\":2}]";// JSON字符串集合转List<Goods>对象List<Goods> goodslist = JSON.parseObject(str, new TypeReference<ArrayList<Goods>>() {});for (Goods goods : goodslist) {System.out.println(goods.getGoods_id());}// 输出: 1// 输出: 2}
}
- JSON字符串转JSON对象:使用
JSON.parseObject()
或JSONObject.parseObject()
。 - JSON对象转JSON字符串:使用
JSON.toJSONString()
或jsonObject.toJSONString()
。 - JSON字符串转JSONArray:使用
JSON.parseArray()
。 - JSON字符串转Java对象:使用
JSON.parseObject()
并指定目标类或TypeReference
。 - JSON字符串集合转List对象:使用
JSON.parseObject()
并指定TypeReference
。