1. 程式人生 > 其它 >java學習之JSON

java學習之JSON

0X00前言

JSON可以說是javascript的一種資料型別,我們學習JSON是為了在客戶端的資料給讀取出來,官方的解釋是:概述:JSON(JavaScript Object Notation, JS 物件簡譜) 是一種輕量級的資料交換格式。它基於 ECMAScript (歐洲計算機協會制定的js規範)的一個子集,採用完全獨立於程式語言的文字格式來儲存和表示資料。簡潔和清晰的層次結構使得 JSON 成為理想的資料交換語言。 易於人閱讀和編寫,同時也易於機器解析和生成,並有效地提升網路傳輸效

0x01基礎使用

(1).概念:javaScript Object Notation javaScript物件表示法
(2).例項:

​ var p={"name":"張三“,"age":"23",""gender:"男"}
​ *json現在多用於儲存和交換文字資訊的語法
​ *進行資料傳輸
​ *JSON比XML更小、更快、更容易解析。

(3).語法:

  1. 資料在名稱/值對中:json資料是由鍵值對構成的
    1. 數字(整數或者浮點數)
    2. 字串(雙引號裡面)
    3. 邏輯值(true or flase)
    4. 陣列(方括裡面){"people":[{},{}]}
    5. 物件 (花括號裡面){"address":{"province:"山西"}}
  2. 鍵用引號(單雙都可以)引起來,也可以不使用
  3. 資料用逗號分割 多個鍵值對之間用逗號隔開
  4. 花括號儲存物件
  5. 方括號儲存資料

0x02使用程式碼

0x1JSON格式

  • JSON的格式是多變的,具有很多種巢狀方式,陣列巢狀鍵值對,鍵值對巢狀陣列
  • 不同的格式具有在不同場景的實用性
<script>
    var person={name:"張三",age:23,gnder:true};
    //alert(person);//巢狀
    var persons={person:[{name:"張三",age:23,gnder:true},
                        {name:"鍾三",age:23,gnder:true},
                        {name:"王四",age:65,gender:false}
        ]
    }
    var ps=[{name:"張三",age:23,gnder:true},
        {name:"鍾三",age:23,gnder:true},
        {name:"王四",age:65,gender:false}]
</script>

0x2獲取JSON物件

  1. json物件.鍵名

  2. json物件["鍵名"](這個要加雙引號)

  3. 陣列用索引下標

    看一下簡單的js程式碼

<script>
    var person={name:"張三",age:23,gnder:true};
    //alert(person);//巢狀
    var persons={person:[
        {name:"張三",age:23,gender:true},
        {name:"鍾三",age:23,gender:true},
        {name:"王四",age:65,gender:false}]
    }
    var ps=[{name:"張三",age:23,gender:true},
        {name:"鍾三",age:23,gender:true},
        {name:"王四",age:65,gender:false}]
    var name=person.name
    var person1 = persons.person[1].name;
    for (var ket in person){
        alert(person[ket])//拿到的是鍵名name,age,gender
    }
    //獲取ps中所有的值
    for (var i=0;i<ps.length;i++){
        var p=ps[i];
        for (var key in p){
            alert(key+":"+p[key]);
        }
    }

</script>

0x03Java物件轉化成json物件

JSON解析器:Jackson

轉化方法:wirteValue(引數1,obj);
    引數1:
         File 將obj物件轉化為JSON字串,並儲存到指定檔案中
         Writer:將obj物件轉化成JSON字串,並將json資料填充到字元輸出流裡面
         OutputStream:將obj物件轉化成json字串,並填充到位元組輸出流
         Writer
        writeValueAsString :物件轉化成json

程式碼使用

person物件和前面的物件一樣三個鍵值對,name、age、gender

@Test
public  void  test() throws IOException {
    Person person = new Person();
    person.setAge(23);
    person.setGender(true);
    person.setName("張無");
    //建立jackson的核心物件 ObjectMapper
    ObjectMapper objectMapper = new ObjectMapper();
    
    String s = objectMapper.writeValueAsString(person);
    System.out.println(s);
    objectMapper.writeValue(new File("c://testdemo1.txt"),person);


}}

有些時候屬性我們會不想要某些屬性被js判斷出來,可以採用註解的方式去@JacksonInject//忽略該屬性,這樣就不會被輸出出來

或者通過 @JsonFormat(pattern = "yyyy-MM-dd")去修改屬性格式。

Person類

public class Person {
    private String name;
    private int age;
    private boolean gender;
    @JsonIgnore
    private String grifrind;
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date birthday;

    public String getGrifrind() {
        return grifrind;
    }

    public void setGrifrind(String grifrind) {
        this.grifrind = grifrind;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public boolean isGender() {
        return gender;
    }

    public void setGender(boolean gender) {
        this.gender = gender;
    }




    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", gender=" + gender +
                '}';
    }

0x04Json轉換成Java物件

  • 轉換方法:writeValue(引數1,obj)

  • 把字串傳入readValue函式,然後確定返回的物件類。

    public class JSONdemo2 {
        @Test
        public void test() throws IOException {
            String json="{\"name\":\"鍾三\",\"age\":44,\"gender\":false,\"birthday\":\"2022-05-27\"}]";
            //建立ObjectMapper
            ObjectMapper objectMapper = new ObjectMapper();
            Person person = objectMapper.readValue(json, Person.class);
            System.out.println(person);
        }
    }
    

0x05總結

繼續衝啊,內容很簡單就是一些資料互動,馬上就要進入框架的學習了準備沉澱一下。