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); >
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);
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" } ]}
(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); }
(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.
@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; }
var jsonVar = {key: value} //将JS对象转换为JSON字符串 var jsonString = JSON.stringify(jsonVar) //将JSON字符串转换为JSON对象 var jsonObject = JSON.parse(jsonString)
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 = '{"name":"James"}'; var obj = eval( '(' + json + ')' ); //注意需要在json字符外包裹一对小括号 alert( obj.name );
3、jQuery 的自带方法
jQuery 中可以使用 $.parseJSON(json) 来将 json 转换为 Javascript 对象。
var json = '{"name":"James"}'; 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 = '{"plugin":"jquery-json","version":2.4}' 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!