Penghuraian data JSON Android


Pengenalan kepada bahagian ini:

Saya percaya semua orang sudah biasa dengan JSON Kaedah pemindahan data yang paling biasa digunakan apabila kami berinteraksi dengan pelayan adalah dalam bentuk rentetan Json. Untuk menyimpan objek, kita juga boleh menulisnya sebagai rentetan Json dan menyimpannya! Menghuraikan Json Saya tidak tahu sama ada anda menggunakan Gson, Fastjson atau Jackson Tunggu, tetapi dalam bahagian ini kami tidak akan menggunakan pustaka penghuraian pihak ketiga ini, tetapi menggunakan penghurai Json Android sendiri untuk menghuraikan Json! Baiklah, mari mulakan bahagian ini!


1. Konsep Json dan perbandingan dengan XML

1) Apakah itu Json?

Jawapan: JavaScript Object Natation, format pertukaran data yang ringan, seperti XML, Penyelesaian yang diterima pakai secara meluas untuk interaksi pelanggan-pelayan! Ia mempunyai kebolehbacaan yang baik dan mudah untuk menulis dengan cepat.

2) Perbandingan Json dan XML:

  • Kebolehbacaan data JSON dan XML pada asasnya adalah sama;
  • JSON dan XML juga mempunyai kaedah penghuraian yang kaya
  • Berbanding dengan XML, JSON mempunyai saiz data yang lebih kecil
  • Interaksi antara JSON dan JavaScript lebih mudah
  • JSON ialah sangat berguna untuk data Ia kurang deskriptif daripada XML
  • JSON jauh lebih pantas daripada XML

PS: Di atas berasal dari Baidu~ Secara ringkasnya, kelebihan Json: kecil saiz, menjimatkan trafik , cuma tidak seintuitif dan boleh dibaca seperti XML Hanya sedikit lebih teruk!

3) Spesifikasi format Json :

Sama seperti protokol, mesti ada satu set spesifikasi Lagipun, kedua-dua pihak menggunakan Json rentetan aksara untuk menghantar data, peraturan sintaks adalah seperti berikut: data dalam pasangan nama/nilai; data dipisahkan dengan komakurung kerinting untuk menyimpan objek;kurung segi empat sama menyimpan tatasusunan; Format penulisan data Json: pasangan nama/nilai Contohnya: "person":"coder-pig"Contohnya, rentetan Json yang mudah:

[
    { "id":"1","name":"基神","age":"18" },
    { "id":"2","name":"B神","age":"18"  },
    { "id":"3","name":"曹神","age":"18" }
]
Selain menghuraikan Json, kami juga boleh menyambungkan Json sendiri Sudah tentu, jika anda mengeja rentetan Json sendiri dan tidak tahu sama ada ia betul, Anda hanya boleh mencari alat pengesahan di Baidu, seperti:

http://www.php.cn/jsontoolTampal rentetan Json dan sahkannya!


2 Android menyediakan kami kelas penghuraian Json

API ini wujud di bawah pakej org.json dan kelas yang kami gunakan Terdapat yang berikut :

  • JSONObject: Objek Json, yang boleh melengkapkan penukaran antara rentetan Json dan objek Java
  • JSONArray: Tatasusunan Json boleh melengkapkan penukaran antara rentetan Json dan koleksi atau objek Java
  • JSONStringer: Kelas pembinaan teks Json, kelas ini boleh membantu membuat teks JSON dengan cepat dan mudah. Setiap entiti JSONStringer hanya boleh mencipta satu teks JSON
  • JSONTokener: Kelas penghuraian Json
  • JSONException: Pengecualian Json

3. Contoh kod: menghuraikan rentetan Json:

PS: Di sini kami tidak akan menulis servlet lain atau meminta tapak web, tetapi terus menulis Json ke dalam rentetan untuk menghuraikan dan mensimulasikan Lupakannya!

1) Contoh penghuraian rentetan Json yang ringkas:

Kami sedang menghuraikan Json yang mudah di atas, mula-mula, mari tulis kelas POJO:

Person .java<🎜. >:

/**
 * Created by Jay on 2015/9/8 0008.
 */
public class Person {
    private String id;
    private String name;
    private String age;
    public void setId(String id){
        this.id = id;
    }
    public String getId(){
        return this.id;
    }
    public void setName(String name){
        this.name = name;
    }
    public String getName(){
        return this.name;
    }
    public void setAge(String age){
        this.age = age;
    }
    public String getAge(){
        return this.age;
    }
    @Override
    public String toString() {
        return this.name + "~年方:" + this.age;
    }
}

Tulis kaedah untuk menghuraikan rentetan Json di atas:

private void parseEasyJson(String json){
    persons = new ArrayList();
    try{
        JSONArray jsonArray = new JSONArray(json);
        for(int i = 0;i < jsonArray.length();i++){
            JSONObject jsonObject = (JSONObject) jsonArray.get(i);
            Person person = new Person();
            person.setId(i+"");
            person.setName(jsonObject.getString("name"));
            person.setAge(jsonObject.getString("age"));
            persons.add(person);
        }
    }catch (Exception e){e.printStackTrace();}
}

Jalankan pemaparan

1.png

Hei, ia sangat mudah, bukan?


2) Contoh penghuraian rentetan Json yang kompleks:

Bagaimana jika ia rentetan Json sedemikian?

2.png

Haha, maka kita perlu menolak data langkah demi langkah:

Kod parsing adalah seperti berikut:

private void parseDiffJson(String json) {
    try {
        JSONObject jsonObject1 = new JSONObject(json);
        Log.e("Json", json);
        JSONArray jsonArray = jsonObject1.getJSONArray("ch");
        for (int i = 0; i < jsonArray.length(); i++) {
            JSONObject jsonObject = (JSONObject) jsonArray.get(i);
            //取出name
            String sname = jsonObject.getString("names");
            JSONArray jarray1 = jsonObject.getJSONArray("data");
            JSONArray jarray2 = jsonObject.getJSONArray("times");
            Log.e("Json", sname);
            Log.e("Json", jarray1.toString());
            Log.e("Json", jarray2.toString());
        }
    } catch (Exception e) {
        e.printStackTrace();
    }

}

Tengok Log yang dicetak:

3.png

Tentunya ada lapisan lain, anda boleh tolak sendiri jika berminat...


Ringkasan bahagian ini:

Baiklah, menggunakan kelas penghuraian JSON yang disediakan oleh Android sudah tentu, anda juga boleh menghuraikan proses tersebut Sebaliknya, anda boleh sambung JSON sendiri Disebabkan kekangan masa, kami akan sambung secara perlahan-lahan di sini, haha ​​Sudah tentu, kami akan melakukan bahagian lanjutan. Ia lebih mudah selepas mempelajari beberapa perpustakaan penghuraian Json pihak ketiga ~Baiklah, itu sahaja untuk bahagian ini, terima kasih~

.