一文教你json字串與JavaBean物件如何相互轉換
阿新 • • 發佈:2021-01-11
工作中經常會遇到在複雜的業務場景中,將資料持久化時某個欄位儲存的是json字串,取出資料進行操作時,不能直接對json字串進行操作,能操作的是JavaBean物件。
或者呼叫其他的服務(Java應用服務、python服務等),接收到的結果為json字串,在對結果進行處理時,不能直接操作,需要將其轉化為JavaBean物件。
…
所以,在這些情況下,就需要將json字串、json物件與JavaBean物件進行轉化,來實現需要的操作。
實現方式如下:
pom檔案中匯入依賴:
<!-- JSON轉換工具類依賴 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.15</version>
</dependency>
1、將json字串轉化為List<JavaBean>物件
資料儲存格式為:
取出的值為:
String resultJson=item. getAnnotationResult();
[{"attribute":["條件_"],"name":"已註明","property":{"end_index":2,"start_index":0},"type":101,"value":"已畫出"},{"attribute":["條件_"],"name":"底筋","property" :{"end_index":6,"start_index":4},"type":101,"value":"底鋼筋"},{"attribute":["條件_"],"name":"底筋","property":{"end_index":16,"start_index":12},"type":101,"value":"底實配鋼筋"},{"attribute":["條件_"],"name":"未繪製","property":{"end_index":20,"start_index":18},"type":101,"value":"未畫出"},{"attribute":["條件_"],"name":"底筋","property":{"end_index":25,"start_index":23},"type":101,"value":"底鋼筋"},{"attribute":["條件_"],"name":"雙向","property":{"end_index":27,"start_index":26},"type":101,"value":"雙向"},{"attribute":["條件_"],"name":"厚度值","property":{"end_index":43,"start_index":39},"type":101,"value":"100mm"}]
將取出的值json串轉化為需要的List<JavaBean>物件:
//JSONObject 匯入的包為import com.alibaba.fastjson.JSONObject;
List<LabelsDTO> samples= JSONObject.parseArray(resultJson,LabelsDTO.class);
需要的JavaBean物件為:
@Data
public class LabelsDTO {
private String name;
private String value;
private Integer type;
private String id;
private List<String> attribute;
private PropertyDTO property;
private String color;
}
2、將json字串轉化為JavaBean物件
String result;
result = ...
JSONObject jsonObject=JSON.parseObject(result);
ResultAutoDTO resultAutoDTO = jsonObject.toJavaObject(ResultAutoDTO.class);
需要轉化為的JavaBean物件為:
@Data
public class ResultAutoDTO {
private int code;
private String id;
private String message;
private DataDTO data;
}
3、將List<JavaBean>物件轉化為json字串
//LabelsDTO見1
List<LabelsDTO> labels=item.getLabels();
String s=JSON.toJSONString(labels);