java操作JSON串
在java操作JSON字符串中,通常分为两种,一种是有对象对应的,一种是没有对象对应的
- 有对象对应的话,可以转换成vo对象的集合
- 没有对象对应的,可以转换成JSON对象来进行相应操作
无论有对象对应还是没有对象的,解析复杂的JSON串(多级JSON),解析完之后,没有被解析的子JSON,还是以JSON字符串的形式存在,被解析的以对象的形式存在
我们操作数据,一般都是把JSON串转换成JSON对象来操作
- 使用阿里巴巴开源的的json转换工具
< !-- 阿里fastjson包JSON转换–>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.56</version>
</dependency>
- 常见的API
//1. 将对象序列化成json字符串
JSON.toJSONString(Object object)
//2. 将json字符串反序列化成对象
JSON.parseObject(String jsonString, Class clazz)//返回 java对象
JSON.parseObject(String jsonString)//返回 JSON对象 JSONObject
//3. 如果json字符串表示的是一个json数组的话,反序列化为json数组 JSONArray
JSON.parseArray(String jsonString);
- JSON对象以及JSON数组操作
//根据key拿到JSON对象的json的字符串值jsonString
//使用场景: 面对多级JSON串,一般转换为JSON对象后,子集还是以JSON串的形式存在,
//这个时候需要利用JSON对象的key,得到相应的字符串jsonString
JSONObject.getString(String key)
//根据key 得到JSON对象中的json数组 JSONArray
JSONObject.getJSONArray(String key)
// 根据下标拿到JSON数组的json对象 JSONObject
JSONArray.getJSONObject(int index)
在工作中前端转JSON直接在数据库中字段存JSON串,最后在前端解析。但是出现了前端解析的时候出错,原因是有空格或者回车的文本无法安全的嵌入到HTML中,可以利用
JSON.stringify('这里是后端传过来的包含文本的JSON对象').replace(/"/g, '"')
将包含文本的JSON对象安全插入到HTML标签中