开发记录:涉及到数据的再封装,Java对象与JSON格式的互相转换
Fastjson
Fastjson 是一个 Java 库,可以将 Java 对象转换为 JSON 格式,当然它也可以将 JSON 字符串转换为 Java 对象。
-
提供了 toJSONString() 和 parSEObject() 方法来将 Java 对象与 JSON 相互转换。调用toJSONString方 法即可将对象转换成 JSON 字符串,parSEObject 方法则反过来将 JSON 字符串转换成对象。
-
导入依赖:
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>x.x.x</version> </dependency>
-
toJSONString() :截取一部分构造方法,会发现Object object,说明Java对象都能转换为字符串类型的Json格式数据
public static String toJSONString(Object object) {
return toJSONString(object, emptyFilters);
}
public static String toJSONString(Object object, SerializerFeature... features) {
return toJSONString(object, DEFAULT_GENERATE_FEATURE, features);
}
开发中的实际案例
案例一:对Map格式的数据进行再次封装,需要对Map格式的数据转换为Java实例对象
@Override
public void save(Map<String, Object> objectMap) { // 发送过来的数据被封装成map格式
// 1. 把参数map集合转换为 Hospital 对象,这里需要使用导入依赖 FastJson
String jsonString = JSONObject.toJSONString(objectMap);
Hospital hospital = JSONObject.parSEObject(jsonString, Hospital.class); // 进一步说明,原先数据用map封装,是字段为key
....
注意Map格式数据中的key与Java对象类字段的对应。
案例二:在短信服务中,需要取出在response body中的status字段,判断调用的短信接口是否发送成功。
HttpResponse response = HttpUtils_Ali.doPost(host, path, method, headers, querys, bodys);
//获取response的body
String entity = EntityUtils.toString(response.getEntity()); // response.getEntity() 只能获取一次,就关闭输出流了
//将body转为JSONObject
JSONObject jsonObject = JSONObject.parSEObject(entity);
String status = (String) jsonObject.get("status"); // 获取发送请求状态,成功返回:{"request_id":"TIDbbb613bb5c94418ea9b7b6b21b25d774","status":"OK"}
return status.equals("OK"); // 注意大小写
利用了JSONObject可以通过get获取相关字段数据
后续有业务使用再更新..................