javaWeb前後端中 JSON&JSON字符串&java實體對象 之間轉換

    JSON是前端js語言中, 用來與其他語言交互的一種輕量級的數據交換格式, 交換時以字符串形式傳遞, 各語言再進行解析即可使用; 相比於XML語言, JSON用來傳輸數據, 層次結構清晰簡單, 目前已基本取代XML, 廣泛被用來跨語言傳輸數據; 

 

一. JSON的數據定義格式:

類型 語法 解釋
對象類型 {name:value,name:value...}

其中name是字符串類型,而value是任意類型,

類似於java中的Map;

數組/集合類型 [value,value,value...] 其中value是任意類型
混合類型 [{},{}... ...] 或 {name:[]... ...} 合理包裹嵌套對象類型和數組類型

 

二. 基於實用的原則, 以下分講:

 

1. 在js中解析Json字符串

    i. 方法: JSON.parse()

        用法:var jsonObj=JSON.parse(JASON字符串), 得到JSON

        注意: 這種方法可以安全地將獲取到的JSON字符串轉爲JSON

    ii. 方法:eval()

        用法:var jsonObj = eval(“(“+json+”)”);

        注意:該方法會執行JSON字符串中可能存在的代碼;

        另: 在字符串兩側拼接左右括號 ( 和 ) 是爲了強制其將括號內內容作爲解析對象解析成JSON, 使用時作爲固定格式即可;

 

2. 在java中將對象, 集合, 數組轉換爲JSON字符串 (基於Jackson)

    代碼如下:(使用 import com.fasterxml.jackson.databind.ObjectMapper;)

ObjectMapper om = new ObjectMapper();
String s = om.writeValueAsString(object);//object可以爲任意對象

    注意: Object轉換爲JSON字符串時,僅放入成員屬性,捨棄方法;

             其中: java對象和Map均將轉爲JSON中的對象格式, java數組和單列集合則轉換爲JSON的數組格式;

 

3. 在java中解析JSON字符串 (基於Jackson)

    i. 簡單的解析:

        舉例:

ObjectMapper om = new ObjectMapper();
Object object = om. readValue(json字符串,Object.calss)

     ii. 數組/集合內嵌Java對象格式解析:

        舉例:

List<Category> list2 = om.readValue(s, new TypeReference<List<Category>>() {});

        注意: 這裏需要用到: com.fasterxml.jackson.core.type.TypeReference;

                傳入該接口匿名類對象作爲readeVlaue的參數2即可;

                需要留意的是,需要定義出於與該結構中嵌套相同的Java類,否則直接用 "簡單的解析:" 時,內層若碰到對象格式JSON, 則自動轉換爲LikedListMap類型;

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章