java hutool工具类处理JSON的使用方法
介绍
JSONUtil是针对JSONObject和JSONArray的静态快捷方法集合,在之前的章节我们已经介绍了一些工具方法,在本章节我们将做一些补充。
使用
1、JSON字符串创建
JSONUtil.toJsonStr可以将任意对象(Bean、Map、集合等)直接转换为JSON字符串。 如果对象是有序的Map等对象,则转换后的JSON字符串也是有序的。
/** * 转换为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)); }
结果
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":"王五"}]
如果我们想获得格式化后的JSON,则:
JSONUtil.toJsonPrettyStr(object); System.out.println("JSONUtil.toJsonPrettyStr(sortedMap) = " + JSONUtil.toJsonPrettyStr(sortedMap));
结果
JSONUtil.toJsonPrettyStr(sortedMap) = {
"attributes": "a",
"b": "b",
"c": "c"
}
2、JSON字符串解析
/** * 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")); }
结果
jsonObject.getStr("name") = Something must have been changed since you leave
3、XML字符串转换为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")); }
结果
json.get("sfzh") = 123
json.get("name") = aa
4、JSON转换为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); }
结果
s = <aaa>你好</aaa><键2>test</键2>
5、 JSON转Bean
我们先定义两个较为复杂的Bean(包含泛型)
@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); }
以下是 Hutool 中关于 JSON 的常用方法:
JSON 字符串的解析与生成:
JSONUtil.parseObj(jsonStr)
:将 JSON 字符串解析为 JSONObject 对象。JSONUtil.parseArray(jsonStr)
:将 JSON 字符串解析为 JSONArray 数组对象。JSONUtil.toJsonStr(obj)
:将 Java 对象转换为 JSON 字符串。
对象与 JSON 字符串的转换:
JSONUtil.toBean(jsonStr, clazz)
:将 JSON 字符串转换为指定类型的 Java 对象。JSONUtil.toMap(jsonStr)
:将 JSON 字符串转换为 Map 对象。JSONUtil.toCamelCaseMap(bean)
:将 Java 对象转换为驼峰风格的 Map 对象,适用于大部分 JavaBean。
JSON 对象的操作:
JSONObject.get(key)
:获取 JSON 对象中指定 key 的值。JSONObject.put(key, value)
:向 JSON 对象中添加键值对。JSONObject.containsKey(key)
:判断 JSON 对象中是否包含指定的 key。JSONObject.keySet()
:获取 JSON 对象中所有键的集合。
JSON 数组的操作:
JSONArray.get(index)
:获取 JSON 数组中指定索引的元素。JSONArray.add(value)
:向 JSON 数组中添加元素。JSONArray.size()
:获取 JSON 数组的长度。JSONArray.iterator()
:获取 JSON 数组的迭代器。
其他常用方法:
JSONUtil.parseFromXml(xmlStr)
:将 XML 字符串解析为 JSON 对象。JSONUtil.toXmlStr(jsonObject)
:将 JSON 对象转换为 XML 字符串。
总结
到此这篇关于java hutool工具类处理JSON的使用方法的文章就介绍到这了,更多相关java hutool处理JSON内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
浅谈DetachedCriteria和Criteria的使用方法(必看)
下面小编就为大家带来一篇浅谈DetachedCriteria和Criteria的使用方法(必看)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧2017-05-05Spring Boot自定义 Starter并推送到远端公服的详细代码
这篇文章主要介绍了Spring Boot自定义 Starter并推送到远端公服,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2022-09-09
最新评论