JSON

言字旁發表於2020-12-31

JSON

一:介紹

  1. JSON是一種輕量級的資料交換格式。易於人閱讀和編寫。同時也易於機器解析和生成,JSON採用完全獨立於語言的文字格式,而且很多語言都提供了對JSON的支援(包括C,C++,JAVA等),這樣就使得JSON成為理想的資料交換格式。
  2. JSON是一種 輕量級的資料交換格式。
  3. 輕量級指的是跟xml做比較。
  4. 資料交換指的是客戶端和伺服器之間業務資料的傳遞格式。

二:JSON在JavaScript中的使用

(1)JSON的定義

JSON是由鍵值對組成,並且由花括號(大括號)包圍,每個鍵由引號引起來,鍵和值之間使用冒號進行分隔,多組鍵值對之間用逗號進行分隔。

<script type="text/javascript">
        //1.json的定義(裡面可以儲存各種型別的值)
        //json其實就是一個物件
        var jsonObj = {
          "key1":12,
          "key2":"abc",
          "key3":true
        };
    </script>

(2)JSON的訪問

<script type="text/javascript">        
//2.json的訪問
//json中的key我們可以理解為是物件中的一個屬性,json中key的訪問就跟訪問物件的屬性一樣,即json物件.key
		alert(jsonObj.key1);
</script>

(3)JSON的兩個常用方法

JSON的存在有兩種形式:

  1. 一種是:物件的形式存在,我們叫他為JSON物件
  2. 一種是:字串的形式存在,我們叫他為JSON字串
  3. 一般我們要操作JSON中的資料的時候,需要JSON物件的格式。
  4. 一般我們要在客戶端和伺服器之間進行資料交換的時候,使用JSON字串。

二者可以相互轉換:

  1. JSON.stringify():把JSON物件轉換為JSON字串
  2. JSON.parse():把JSON字串轉換成為JSON物件
   //把JSON物件轉換成為JSON字串
        var jsonObjString = JSON.stringify(jsonObj);//特別像JAVA中物件的toString()方法。
        alert(jsonObjString);

三:JSON在Java中的使用

(1)javaBean和json的互換

public class jsonTest {
	//(1)javaBean和json的互換
    @Test
    public void test1(){
        Person person = new Person(1, "周杰倫");
        //建立GSon物件例項(先匯入gson包)
        Gson gson = new Gson();
        //toJson()方法可以把java物件轉換為JSON字串
        String personJsonString = gson.toJson(person);
        System.out.println(personJsonString);//{"id":1,"name":"周杰倫"}
        //fromJson()把JSON字串轉換回JAVA物件
        //第一個引數是JSON字串
        //第二個引數是轉換回去的JAVA物件型別
        Person person1 = gson.fromJson(personJsonString, Person.class);
        System.out.println(person1);
    }
}

(2)List和json的互換

//PersonListType.java檔案
public class PersonListType extends TypeToken<ArrayList<Person>> {
}
public class jsonTest {
	//(2)List和json的互換
    @Test
    public void test2(){
        List<Person> personList = new ArrayList<>();
        personList.add(new Person(1,"周杰倫"));
        personList.add(new Person(2,"方文山"));
        Gson gson = new Gson();
        //把List集合轉換成json字串
        String personListJsonString = gson.toJson(personList);
        System.out.println(personListJsonString);
        //把json字串轉換為list集合
        List<Person> list = gson.fromJson(personListJsonString, new PersonListType().getType());
        System.out.println(list);//[Person{id=1, name='周杰倫'}, Person{id=2, name='方文山'}]
        Person person = list.get(0);
        System.out.println(person);//Person{id=1, name='周杰倫'}
    }
}

(3)map和json的互換

//PersonMapType.java檔案
public class PersonMapType extends TypeToken<HashMap<Integer, Person>> {
}
@Test
    public void test3(){
        Map<Integer,Person> personMap = new HashMap<>();
        personMap.put(1,new Person(1,"李白"));
        personMap.put(2,new Person(2,"杜甫"));
        Gson gson = new Gson();
        //把JSON集合轉換成json字串
        String personMapJsonString = gson.toJson(personMap);
        System.out.println(personMapJsonString);//{"1":{"id":1,"name":"李白"},"2":{"id":2,"name":"杜甫"}}
        //把json字串轉換為map集合
        Map<Integer,Person> personMap1 = gson.fromJson(personMapJsonString,new PersonMapType().getType());//或者寫成匿名內部類的形式
        System.out.println(personMap1);//{1=Person{id=1, name='李白'}, 2=Person{id=2, name='杜甫'}}
        Person person = personMap1.get(1);
        System.out.println(person);//Person{id=1, name='李白'}
    }

相關文章