Analyse des données Android JSON


Introduction à cette section :

Je pense que tout le monde connaît JSON. La méthode de transfert de données la plus couramment utilisée lorsque nous interagissons avec des serveurs se présente sous la forme de chaînes Json. Pour sauvegarder l'objet, nous pouvons également l'écrire sous forme de chaîne Json et le stocker ! Analyse de Json Je ne sais pas si vous utilisez Gson, Fastjson ou Jackson Attendez, mais dans cette section, nous n'utiliserons pas ces bibliothèques d'analyse tierces, mais utiliserons le propre analyseur Json d'Android pour analyser Json ! Bon, commençons cette section !


1. Concept Json et comparaison avec XML

1) Qu'est-ce que Json ?

Réponse : JavaScript Object Natation, un format d'échange de données léger, comme XML, Une solution largement adoptée pour l’interaction client-serveur ! Il a une bonne lisibilité et est facile à écrire rapidement.

2) Comparaison de JSON et XML :

  • La lisibilité des données de JSON et XML est fondamentalement la même ;
  • JSON et XML ont également des méthodes d'analyse riches
  • Par rapport à XML, JSON a une taille de données plus petite
  • L'interaction entre JSON et JavaScript est plus pratique
  • JSON est très utile pour les données C'est moins descriptif que XML
  • JSON est beaucoup plus rapide que XML

PS : Ce qui précède vient de Baidu~ Pour faire simple, les avantages de Json : petit taille, économie de trafic, mais pas aussi intuitif et lisible que XML Juste un peu pire !

3) Spécification du format Json  :

Tout comme un protocole, il doit y avoir un ensemble de spécifications. Après tout, les deux parties utilisent Json. Chaîne de caractères pour transmettre des données, les règles de syntaxe sont les suivantes : données en paires nom/valeur; données séparées par des virgules accolades pour enregistrer les objets;les crochets enregistrent le tableau ; Le format d'écriture des données Json : Paire nom/valeur Par exemple : "person": "coder-pig" Par exemple, une simple chaîne Json :

[
    { "id":"1","name":"基神","age":"18" },
    { "id":"2","name":"B神","age":"18"  },
    { "id":"3","name":"曹神","age":"18" }
]

En plus d'analyser Json, nous pouvons également épisser Json nous-mêmes. Bien sûr, si vous épelez vous-même une chaîne Json et que vous ne savez pas si elle est correcte, Vous pouvez simplement trouver un outil de vérification sur Baidu, tel que : http://www.php.cn/jsontoolCollez la chaîne Json et vérifiez-la !


2. Android nous fournit la classe d'analyse Json

Ces API existent sous le package org.json, et les classes que nous utilisons sont les suivantes :

  • JSONObject : Objet Json, qui peut compléter la conversion entre la chaîne Json et l'objet Java
  • JSONArray : Le tableau Json peut compléter la conversion entre la chaîne Json et la collection ou l'objet Java
  • JSONStringer : Classe de construction de texte Json, cette classe peut aider à créer du texte JSON rapidement et facilement. Chaque entité JSONStringer ne peut créer qu'un seul texte JSON
  • JSONTokener : classe d'analyse Json
  • JSONException : exception Json

3. Exemple de code : analyse de la chaîne Json :

PS : Ici, nous n'écrirons pas une autre servlet ni ne demanderons le site Web, mais écrirons directement Json dans la chaîne pour analyser et simuler. Oubliez ça !

1) Exemple d'analyse de chaîne Json simple :

Nous analysons le Json simple ci-dessus. Tout d'abord, écrivons une classe 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;
    }
}

Écrivez une méthode pour analyser la chaîne Json ci-dessus :

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();}
}

Exécutez le rendu

1.png

Hé, c'est très simple, non ? Ensuite, trouvons-en un plus compliqué !


2) Exemple d'analyse de chaîne Json complexe :

Et s'il s'agissait d'une telle chaîne Json ?

2.png

Haha, alors nous devons déduire les données étape par étape :

Le code d'analyse est le suivant :

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();
    }

}

Regardez le Log imprimé:

3.png

Bien sûr il y a une autre couche, vous pouvez la déduire vous-même si vous êtes intéressé...


Résumé de cette section :

D'accord, l'utilisation de la classe d'analyse JSON fournie par Android doit se faire lentement. Bien sûr, vous pouvez également analyser le processus. D'un autre côté, vous pouvez assembler JSON vous-même. En raison de contraintes de temps, nous allons l'assembler lentement ici, haha, bien sûr, nous ferons la partie avancée. C'est beaucoup plus facile après avoir appris certaines bibliothèques d'analyse Json tierces ~D'accord, c'est tout pour cette section, merci~

.