Rumah  >  Artikel  >  Java  >  Apakah kaedah penghantaran JSON untuk bahagian hadapan dan hujung belakang Java?

Apakah kaedah penghantaran JSON untuk bahagian hadapan dan hujung belakang Java?

王林
王林ke hadapan
2023-05-15 12:31:061242semak imbas

Pengenalan kepada data JSON

1. Apakah itu data JSON

JSON (JavaScript Object Notation) ialah format pertukaran data yang ringan: key:value Format.

JSON menggunakan format teks bebas bahasa sepenuhnya. Ciri ini menjadikan JSON sebagai bahasa pertukaran data yang ideal. Mudah untuk manusia membaca dan menulis, dan mudah untuk mesin menghuraikan dan menjana.

2. JSON string

JSON string ialah rentetan rentetan dalam format JSON, iaitu rentetan JSON juga merupakan jenis rentetan, tetapi rentetan ini Terdapat format, iaitu format seperti peta [key:value].

  • Kunci rentetan JSON mestilah rentetan (nilai angka juga boleh disimpan, tetapi nilainya masih Rentetan apabila disimpan dan dikeluarkan); >

  • Nilai rentetan JSON boleh menjadi: nombor (integer atau nombor titik terapung), rentetan (dalam petikan berganda), tatasusunan (dalam kurungan segi empat sama), objek (dalam kurungan kerinting), benar/salah/ null.
3. Objek JSONObject Backend

JSONObject ialah struktur data yang boleh difahami sebagai struktur data dalam format JSON (struktur nilai kunci ),

serupa dengan peta

, anda boleh menggunakan kaedah put untuk menambah elemen pada objek JSONObject. JSONObject boleh ditukar dengan mudah menjadi rentetan, dan objek lain juga boleh dengan mudah ditukar menjadi objek JSONObject. (1) Hasilkan JSONObject

	JSONObject zhangsan = new JSONObject();
        try {
            //添加
            zhangsan.put("name", "张三");
            zhangsan.put("age", 18.4);
            zhangsan.put("birthday", "1900-20-03");
            zhangsan.put("majar", new String[] {"哈哈","嘿嘿"});
            zhangsan.put("null", null);
            zhangsan.put("house", false);
            System.out.println(zhangsan.toString());
        } catch (JSONException e) {
            e.printStackTrace();
        }

melalui asli (2) Jana

   HashMap<String, Object> zhangsan = new HashMap<>();        
   zhangsan.put("name", "张三");
   zhangsan.put("age", 18.4);
   zhangsan.put("birthday", "1900-20-03");
   zhangsan.put("majar", new String[] {"哈哈","嘿嘿"});
   zhangsan.put("null", null);
   zhangsan.put("house", false);
   System.out.println(new JSONObject(zhangsan).toString());

melalui struktur data hashMap (3) Jana

  Student student = new Student();
  student.setId(1);
  student.setAge("20");
  student.setName("张三");
  // 生成 JSONObject
  System.out.println(JSON.toJSON(student));

melalui JavaBean (4 ) Rentetan JSON dan penukaran JSONObject

String studentString = "{\"id\":1,\"age\":2,\"name\":\"zhang\"}";
 
//JSON字符串转换成 JSONObject 
JSONObject jsonObject1 = JSONObject.parseObject(stuString); 
System.out.println(jsonObject1);

4 Perbandingan rentetan JSON bahagian hadapan dan objek Javascript

Apakah kaedah penghantaran JSON untuk bahagian hadapan dan hujung belakang Java?

5. . Struktur asas

Dua struktur JSON:

(1) Koleksi pasangan nama/nilai. Dalam bahasa yang berbeza, ia difahami sebagai objek, rekod, struct, kamus, jadual cincang, senarai berkunci atau tatasusunan bersekutu).

 { "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" }

(2) Senarai nilai tersusun. Dalam kebanyakan bahasa, ia difahami sebagai tatasusunan.

{ "people": [
{ "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" },
{ "firstName": "Jason", "lastName":"Hunter", "email": "bbbb"}, 
{ "firstName": "Elliotte", "lastName":"Harold", "email": "cccc" }
]}

5. Aplikasi format JSON

(1) Berikan data JSON kepada pembolehubah

Sebagai contoh, anda boleh mencipta pembolehubah Javascript baharu dan kemudian tetapkan secara langsung rentetan data dalam format JSON kepadanya:

var people = { "programmers": [ { "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" },

{ "firstName": "Jason", "lastName":"Hunter", "email": "bbbb" },

{ "firstName": "Elliotte", "lastName":"Harold", "email": "cccc" }

],

"authors": [

{ "firstName": "Isaac", "lastName": "Asimov", "genre": "science fiction" },

{ "firstName": "Tad", "lastName": "Williams", "genre": "fantasy" },

{ "firstName": "Frank", "lastName": "Peretti", "genre": "christian fiction" }

],

"musicians": [

{ "firstName": "Eric", "lastName": "Clapton", "instrument": "guitar" },

{ "firstName": "Sergei", "lastName": "Rachmaninoff", "instrument": "piano" }

] }

(2) Akses data

Selepas meletakkan tatasusunan di atas ke dalam pembolehubah Javascript, anda boleh mengaksesnya dengan mudah. Malah, mengakses elemen tatasusunan hanya dilakukan menggunakan notasi titik. Jadi, untuk mengakses nama akhir entri pertama dalam senarai pengaturcara, hanya gunakan kod

berikut dalam JavaScript:

people.programmers[0].lastName;

(3) Ubah suai data JSON

Sama seperti data boleh diakses dengan noktah dan kurungan, data juga boleh diubah suai dengan mudah dengan cara yang sama

people.musicians[1].lastName = "Rachmaninov";

(4) Tukar Rentetan

Mana-mana objek JSONObject dan Javascript boleh ditukar kepada Teks JSON juga boleh ditukar secara songsang.

1. Bahagian belakang menukar objek Java dan JSONObject ke dalam format rentetan JSON

1 kelas Jackson

(1) maven memperkenalkan dependensi

.
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.9.9</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.9.9</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.9.9</version>
        </dependency>

(2) Penggunaan fungsi perpustakaan kelas

    @RequestMapping(value="/returnJson")
    //@ResponseBody注解将JSON数据写入响应流中返回到前端
    @ResponseBody
    public String returnJson(){
        ObjectMapper objectMapper=new ObjectMapper();
        Student student=new Student();
        //writeValueAsString()函数将对象转换为JSON字符串
        return objectMapper.writeValueAsString(student);
    }

2. Pustaka kelas FastJson

(1) Maven memperkenalkan dependensi

    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.4</version>
    </dependency>

(2. ) Perbezaan dalam butiran apabila fungsi perpustakaan kelas menggunakan

// 将 JSON 字符串反序列化成 JavaBean 
public static final Object parse(String text); 
// 将 JSON 字符串反序列化成 JSONObject    
public static final JSONObject parseObject(String text); 
// 将 JSON 字符串反序列化成 JavaBean 或 JSONObject 
public static final <T> T parseObject(String text, Class<T> clazz); 
// 将 JSON 字符串反序列化成JSONObject 的数组
public static final JSONArray parseArray(String text); 
// 将 JSON 字符串反序列化成 JavaBean 的数组
public static final <T> List<T> parseArray(String text, Class<T> clazz); 
// 将 Java 对象序列化为JSON 字符串 
public static final String toJSONString(Object object); 
// 将 Java 对象序列化为带格式的 JSON 字符串 
public static final String toJSONString(Object object, boolean prettyFormat); 
 //将 JavaBean 转换为 JSONObject 或者 JSONArray。
public static final Object toJSON(Object javaObject);

parse() dan parseObject() untuk deserialize ialah: parse() akan mengenal pasti dan memanggil kaedah penetap kelas sasaran() akan The return nilai ditukar kepada JSONObject, dan JSON.toJSON(obj) dilaksanakan, iaitu, JavaBean ditukar kepada JSONObject Oleh itu, semasa pemprosesan, kaedah getter kelas sasaran penyahserikatan dipanggil untuk menetapkan parameter kepada JSONObject.

3. Gunakan anotasi @RestController

@RestController ialah anotasi gabungan @ResponseBody dan @Controller.

    1) @Controller digunakan untuk bertindak balas kepada halaman Jika ia adalah kaedah jenis rentetan, springmvc akan melompat ke halaman yang sepadan (lihat).
  • 2) @ResponseBody digunakan untuk bertindak balas kepada data Jika ia adalah jenis objek atau kaedah jenis Peta, springmvc akan menukar objek hasil ke dalam format json dan mengeluarkannya ke bahagian hadapan. . (Selepas menukar objek yang dikembalikan oleh kaedah pengawal ke dalam format yang ditentukan melalui penukar yang sesuai, ia ditulis pada kawasan badan objek tindak balas)
  • 3) @RestController anotasi akan menyebabkan springmvc kepada Objek atau Peta yang dikembalikan secara automatik ditukar kepada json dan dikembalikan ke hujung hadapan (lalai asasnya ialah menggunakan jsckson untuk melaksanakan penukaran format data).
  •     @RequestMapping(value="/returnJson")
        @ResponseBody
        public Student returnJson(){
            Student student=new Student();
            student.setName("林俊杰");
            student.setBirth(new Date(1996-03-15));
            student.setPassword("123456");
            String[] lan= {"Java","Python"};
            student.setLanguage(lan);
            return student;
        }
  • 2 Penukaran objek Javascript bahagian hadapan dan format rentetan JSON

1. 1 ) Objek Javascript dan penukaran rentetan json

var jsonVar = {key: value}
 //将JS对象转换为JSON字符串
var jsonString = JSON.stringify(jsonVar) 
//将JSON字符串转换为JSON对象
var jsonObject = JSON.parse(jsonString)
(2) Tatasusunan Javascript dan penukaran rentetan json
var jsonVar = [value1,..,value]
//将JS数组转换为JSON字符串
var jsonString = JSON.stringify(jsonVar)  
//将JSON字符串转换为数组对象
var jsonObject = JSON.parse(jsonString)

2 fungsi eval () yang disertakan dengan Javascript boleh menukar data json menjadi objek Javascript.

var json = &#39;{"name":"James"}&#39;;
var obj = eval( &#39;(&#39; + json + &#39;)&#39; );  //注意需要在json字符外包裹一对小括号
alert( obj.name );

3、jQuery 的自带方法

jQuery 中可以使用 $.parseJSON(json) 来将 json 转换为 Javascript 对象。

var json = &#39;{"name":"James"}&#39;;
var obj = $.parseJSON(json);  
alert( obj.name );

4、使用 jquery.json 插件

该插件提供了 4 个函数,用于解析和反解析 json,具体如下:

  • (1)toJSON:将 Javascript 的 object、number、string 或 array 转换成 JSON 数据。

  • (2)evalJSON:把 JSON 格式数据转换成 Javascript 对象,速度很快,不过这点速度微不足道。

  • (3)secureEvalJSON:把 JSON 转换成 Javascript 对象,但是转换之前会检查被转换的数据是否是 JSON 格式的。

  • (4)quoteString:在字符串两端添加引号,并智能转义(跳过)任何引号,反斜杠,或控制字符。

  • (注意:需要和 jQuery 核心库结合使用)

var obj = {"plugin":"jquery-json","version":2.4};
//json = &#39;{"plugin":"jquery-json","version":2.4}&#39;
var json = $.toJSON( obj );
// 得到name值为:"jquery-json"
var name = $.evalJSON( json ).plugin;
// 得到version值为:2.4
var version = $.evalJSON( json ).version;

Atas ialah kandungan terperinci Apakah kaedah penghantaran JSON untuk bahagian hadapan dan hujung belakang Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam