Loading

1 2

开发记录:涉及到数据的再封装,Java对象与JSON格式的互相转换

开发记录:涉及到数据的再封装,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获取相关字段数据

后续有业务使用再更新..................

posted @ 2022-02-24 15:57  Komorebi_WH  阅读(174)  评论(0编辑  收藏  举报