1. 程式人生 > 其它 >一文教你json字串與JavaBean物件如何相互轉換

一文教你json字串與JavaBean物件如何相互轉換

技術標籤:Java基礎jsonjavabean

工作中經常會遇到在複雜的業務場景中,將資料持久化時某個欄位儲存的是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);