【JavaWeb】JSON概述

概念

JSON:JavaScript 對象表示法(JavaScript Object Notation)。

JSON一種數據格式。它本身是一串字符串,只是它有固定格式的字符串,符合這個數據格式要求的字符串,我們稱之爲JSON。

user包含 3 個用戶(對象),數組中每個對象表示了姓名和年齡:

var user =  [
        { "name": "張三", "age": 26 },
        { "name": "李四", "age": 29 },
        { "name": "王五", "age": 31 }
    ]

作用

java可以使用對象對一些屬性進行封裝。而JSON是在JavaScript中存儲和交換文本信息的語法,類似 XML。但是它比 XML 更小、更快,更易解析。

語法規則

  • 數據在名稱/值對中:json數據是由鍵值對構成的,鍵用引號(單雙都行)引起來,也可以不使用引號
  • 數據由逗號分隔:多個鍵值對由逗號分隔
  • 花括號保存對象
  • 方括號保存數組

數據的書寫格式是:{Key:Value}{Key:Array}

例如:

{"name" : "張三"}

值的範圍:

  • 數字(整數或浮點數)
  • 字符串(在雙引號中)
  • 邏輯值(true 或 false
  • 數組(在方括號中)
  • 對象(在花括號中)
  • null

獲取數據:

1. JSON對象.鍵名

var myObj, x;
myObj = { "name":"runoob", "alexa":10000, "site":null };
x = myObj["name"];

2. JSON對象["鍵"]

var myObj, x;
myObj = { "name":"runoob", "alexa":10000, "site":null };
x = myObj["name"];

嵌套 JSON 對象

JSON 對象中可以包含另外一個 JSON 對象:

myObj = {
    "name":"runoob",
    "alexa":10000,
    "sites": {
        "site1":"www.baidu.com",
        "site2":"m.taobao.com",
        "site3":"c.csdn.net"
    }
}

可以使用點號(.)或者中括號([])來訪問嵌套的 JSON 對象。

x = myObj.sites.site2;
// 或者
x = myObj.sites["site1"];

JSON數據和Java對象的相互轉換

1. Java轉換爲JSON對象(常用)

 用jackson解析器實現,步驟如下:

  1. 導入jackson的相關jar包
  2. 創建Jackson核心對象 ObjectMapper
  3. 調用ObjectMapper的相關方法進行轉換

轉換方法:
1.  writeValue(參數1,obj):
             參數1可以是以下幾種:
                        File:將obj對象轉換爲JSON字符串,並保存到指定的文件中
                        Writer:將obj對象轉換爲JSON字符串,並將json數據填充到字符輸出流中
                        OutputStream:將obj對象轉換爲JSON字符串,並將json數據填充到字節輸出流中

//Java對象轉爲JSON字符串
    
        //1.創建Person對象
        Person p  = new Person();
        p.setName("張三");
        p.setAge(23);
        p.setGender("男");

        //2.創建Jackson的核心對象  ObjectMapper
        ObjectMapper mapper = new ObjectMapper();

        //3.writeValue方法將對象傳入轉換到文件中
        String json = mapper.writeValue(new File("d://a.txt"),p);

2. writeValueAsString(obj):將對象轉爲json字符串

//Java對象轉爲JSON字符串
    
        //1.創建Person對象
        Person p  = new Person();
        p.setName("張三");
        p.setAge(23);
        p.setGender("男");

        //2.創建Jackson的核心對象  ObjectMapper
        ObjectMapper mapper = new ObjectMapper();

        //3.writeValueAsString方法將對象傳入轉換爲json
        String json = mapper.writeValueAsString(p);
        System.out.println(json); //{"name":"張三","age":23,"gender":"男"}

註解:

1. @JsonIgnore:排除屬性。
2. @JsonFormat:屬性值的格式化
         例如: @JsonFormat(pattern = "yyyy-MM-dd")

複雜的java對象轉換

1. List:數組

2. Map:對象格式一致

依舊使用上面的方法,不過傳入方法內的參數不再是一個原來的對象,而是集合

2. JSON轉換爲Java對象

1. 導入jackson的相關jar包
2. 創建Jackson核心對象 ObjectMapper
3. 調用ObjectMapper的相關方法進行轉換
      readValue(json字符串數據,Class)

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