Article preview:
JSONUtil
introduce
JSONUtil is a collection of static shortcut methods for JSONObject and JSONArray. We have introduced some tool methods in previous chapters, and we will make some additions in this chapter.
use
1. JSON string creation
JSONUtil.toJsonStr can directly convert any object (Bean, Map, collection, etc.) into a JSON string. If the object is an ordered Map, etc., the converted JSON string is also ordered.
/**
* 转换为JSON字符串
* <p>
* 被转为JSON的对象
*
* @return JSON字符串
*/
@Test
void toJsonStrTest() {
//map
SortedMap<Object, Object> sortedMap = new TreeMap<Object, Object>() {
private static final long serialVersionUID = 1L;
{
put("attributes", "a");
put("b", "b");
put("c", "c");
}
};
//对象
Student beanString = new Student(1, 1, 1, "张三");
//集合
List<Student> list = new ArrayList<>();
list.add(new Student(1, 1, 1, "张三"));
list.add(new Student(1, 1, 2, "李四"));
list.add(new Student(1, 1, 3, "王五"));
System.out.println("JSONUtil.toJsonStr(beanString) = " + JSONUtil.toJsonStr(beanString));
System.out.println("JSONUtil.toJsonStr(sortedMap) = " + JSONUtil.toJsonStr(sortedMap));
System.out.println("JSONUtil.toJsonStr(list) = " + JSONUtil.toJsonStr(list));
}
result
JSONUtil.toJsonStr(beanString) = {
"gradeId":0,"studentId":1,"termId":1,"classId":1,"name":"张三"}
JSONUtil.toJsonStr(sortedMap) = {
"attributes":"a","b":"b","c":"c"}
JSONUtil.toJsonStr(list) = [{
"gradeId":0,"studentId":1,"termId":1,"classId":1,"name":"张三"},
{
"gradeId":0,"studentId":2,"termId":1,"classId":1,"name":"李四"},
{
"gradeId":0,"studentId":3,"termId":1,"classId":1,"name":"王五"}]
If we want to get the formatted JSON, then:
JSONUtil.toJsonPrettyStr(object);
System.out.println("JSONUtil.toJsonPrettyStr(sortedMap) = "
+ JSONUtil.toJsonPrettyStr(sortedMap));
result
JSONUtil.toJsonPrettyStr(sortedMap) = {
"attributes": "a",
"b": "b",
"c": "c"
}
2. JSON string parsing
/**
* JSON字符串转JSONObject对象
* <p>
* JSON字符串
*
* @return JSONObject
*/
@Test
void Test() {
String html = "{\"name\":\"Something must have been changed since you leave\"}";
JSONObject jsonObject = JSONUtil.parseObj(html);
System.out.println("jsonObject.getStr(\"name\") = " + jsonObject.getStr("name"));
}
result
jsonObject.getStr("name") = Something must have been changed since you leave
3. Convert XML string to JSON
/**
* XML字符串转为JSONObject
*
* XML字符串
* @return JSONObject
*/
@Test
void parseFromXmlTest() {
String s = "<sfzh>123</sfzh><sfz>456</sfz><name>aa</name><gender>1</gender>";
JSONObject json = JSONUtil.parseFromXml(s);
System.out.println("json.get(\"sfzh\") = " + json.get("sfzh"));
System.out.println("json.get(\"name\") = " + json.get("name"));
}
result
json.get("sfzh") = 123
json.get("name") = aa
4. Convert JSON to XML
/**
* 转换为XML字符串
*
* @param json JSON
* @return XML字符串
*/
@Test
void toXmlStrTest() {
final JSONObject put = JSONUtil.createObj()
.set("aaa", "你好")
.set("键2", "test");
// <aaa>你好</aaa><键2>test</键2>
final String s = JSONUtil.toXmlStr(put);
System.out.println("s = " + s);
}
result
s = <aaa>你好</aaa><键2>test</键2>
5. JSON to Bean
Let's first define two more complex beans (including generics)
@Data
public class ADT {
private List<String> BookingCode;
}
@Data
public class Price {
private List<List<ADT>> ADT;
}
/**
* JSON字符串转为实体类对象,转换异常将被抛出
*
* @param <T> Bean类型
* @param jsonString JSON字符串
* @param beanClass 实体类对象
* @return 实体类对象
* @since 3.1.2
*/
@Test
void toBeanTest() {
String json = "{\"ADT\":[[{\"BookingCode\":[\"N\",\"N\"]}]]}";
Price price = JSONUtil.toBean(json, Price.class);
System.out.println("price = " + price);
}