Maison > Java > javaDidacticiel > L'utilisation de constructions et de méthodes json par le package JSON-lib

L'utilisation de constructions et de méthodes json par le package JSON-lib

零下一度
Libérer: 2017-06-27 10:34:26
original
1414 Les gens l'ont consulté

Le package JSON-lib (les deux classes les plus critiques sont JSONObject et JSONArray) complète la construction de json et l'utilisation de quelques méthodes de base.

La différence entre les deux :

①La chaîne construite par JSONObject se présente sous la forme de paires clé-valeur (clé:valeur), et plusieurs paires clé-valeur sont reliées par des virgules ; 🎜>

②JSONArray La chaîne construite se présente sous la forme d'un tableau ([array1, array2,...]).

Lien de téléchargement du package à utiliser :

1. Utilisation de JSONObject.

(1) Deux méthodes de construction pour les chaînes JSON :

① Utiliser des objets Java ; ② Utiliser des collections Map.

Étape 1 : Créez d'abord un nouveau projet Java et importez les packages de dépendances

Étape 2 : Créez deux classes de test :

Teacher.java

package com.snnu.json;import java.util.List;public class Teacher {private String name;private String sex;private int age;private List<Transport> myTool;    
    public Teacher(){
        
    }    public Teacher(String name,String sex,int age,List<Transport> myTool){this.name = name;this.sex = sex;this.age = age;this.myTool = myTool;
    }public String getName() {return name;
    }public void setName(String name) {this.name = name;
    }public String getSex() {return sex;
    }public void setSex(String sex) {this.sex = sex;
    }public int getAge() {return age;
    }public void setAge(int age) {this.age = age;
    }public List<Transport> getMyTool() {return myTool;
    }public void setMyTool(List<Transport> myTool) {this.myTool = myTool;
    }

}
Copier après la connexion
Transport.java

package com.snnu.json;public class Transport {    private String name;private float price;    public Transport(){
        
    }    public Transport(String name,float price){this.name = name;this.price = price;
    }    
    public String getName() {return name;
    }public void setName(String name) {this.name = name;
    }public float getPrice() {return price;
    }public void setPrice(float price) {this.price = price;
    }
    
    
    
    
}
Copier après la connexion
Étape 3 : Écrire la méthode principale

Méthode 1 :

package com.snnu.json;import java.util.ArrayList;import java.util.List;import net.sf.json.JSONObject;public class Demo_creajsonFromObject {// 利用java对象生成json字符串public JSONObject createJsonFromObject(Object object) {return JSONObject.fromObject(object);
    }public static void main(String[] args) {// TODO Auto-generated method stubDemo_creajsonFromObject demo = new Demo_creajsonFromObject();

        Teacher t = new Teacher();
        t.setName("张三");
        t.setSex("男");
        t.setAge(21);

        Transport bike = new Transport("自行车", 267);
        Transport motorcycle = new Transport("摩托车", 3267);
        Transport car = new Transport("小汽车", 100000);
        List<Transport> tools = new ArrayList<Transport>();
        tools.add(bike);
        tools.add(motorcycle);
        tools.add(car);

        t.setMyTool(tools);

        JSONObject ob = demo.createJsonFromObject(t);

        System.out.println(ob);

    }

}
Copier après la connexion
La chaîne json générée est :

{
    "age": 21,
    "myTool": [
        {
            "name": "自行车",
            "price": 267
        },
        {
            "name": "摩托车",
            "price": 3267
        },
        {
            "name": "小汽车",
            "price": 100000
        }
    ],
    "name": "张三",
    "sex": "男"
}
Copier après la connexion

Méthode 2 :

package com.snnu.json;import java.util.HashMap;import java.util.Map;import net.sf.json.JSONObject;public class Demo_creajsonFromMap {//使用map集合生成json字符串public JSONObject createJsonFromMap(Map<String,String> map){
        JSONObject jsob=new JSONObject();
        jsob.putAll(map);return jsob;
    }    
    public static void main(String[] args) {// TODO Auto-generated method stubDemo_creajsonFromMap demo=new Demo_creajsonFromMap();
        
        Map<String,String> mmap=new HashMap<String,String>();
        mmap.put("name", "张三");
        mmap.put("sex", "男");
        mmap.put("age", "21");
        
        JSONObject ob=demo.createJsonFromMap(mmap);
        System.out.println(ob);
        
    }

}
Copier après la connexion
La chaîne json générée est :

{"sex": "男","name": "张三","age": "21"}
Copier après la connexion
(2) Exemples de trois méthodes courantes de JSONObject.

package com.snnu.json;import java.util.ArrayList;import java.util.List;import net.sf.json.JSONObject;public class MethodTest {//put方法:在一个json中插入一个节点,若该节点已存在,则该节点的值将会被替换public JSONObject testPut(){
        JSONObject jo1=new JSONObject();
        
        jo1.put("a", "1");
        jo1.put("b", "2");
        jo1.put("c", "3");
        
        Transport bike=new Transport("bike",200);
        jo1.put("d", bike);
        
        List<String> list=new ArrayList<String>();
        list.add("one");
        list.add("two");
        list.add("three");
        jo1.put("e", list);
        
        jo1.put("a", "100");        return jo1;
    }    
    //accumulate方法:可以在同一个key下累积值,若key对应的value有值,则以数组形式累积;否则相当于put方法public JSONObject testAccumulate(){
        JSONObject jo2=new JSONObject();
        
        jo2.put("a", "1");
        jo2.put("b", "2");
        jo2.put("c", "3");
        jo2.accumulate("c", "300");
        
        Transport bike=new Transport("bike",200);
        jo2.accumulate("c", bike);
        
        List<String> list=new ArrayList<String>();
        list.add("one");
        list.add("two");
        list.add("three");
        jo2.accumulate("c", list);
        
        jo2.put("d", "4");        return jo2;
    }    
    //与put方法基本一致public JSONObject testElement(){
        JSONObject jo3=new JSONObject();
        
        jo3.put("a", "1");
        jo3.put("b", "2");
        jo3.put("c", "3");
        jo3.element("c", "300");        
        return jo3;
    }    
    
    public static void main(String[] args) {// TODO Auto-generated method stubMethodTest test=new MethodTest();
        System.out.println("JSONObject的put方法使用"+test.testPut());
        System.out.println("JSONObject的accumulate方法使用"+test.testAccumulate());
        System.out.println("JSONObject的element方法使用"+test.testElement());
        
    }

}
Copier après la connexion

①le résultat au format de la chaîne JSON de sortie de la méthode de mise est :

{"a": "100","b": "2","c": "3","d": {"name": "bike","price": 200},"e": ["one","two","three"]
}
Copier après la connexion
②la sortie de la méthode d'accumulation Le json Le résultat du formatage de la chaîne est :

{"a": "1","b": "2","c": ["3","300",
        {"name": "bike","price": 200},
        ["one","two","three"]
    ],"d": "4"}
Copier après la connexion
③element méthode génère le résultat du formatage de la chaîne json :

{"a": "1","b": "2","c": "300"}
Copier après la connexion
2, Utilisation de JSONArray

(1) Utilisation de base :

package com.snnu.json;import net.sf.json.JSONArray;import net.sf.json.JSONObject;public class demo_JsonArray {    
    public JSONObject testJsonArray(){
        JSONObject ob=new JSONObject();
        
        JSONArray ja=new JSONArray();
        ja.add("1");
        ja.add("2");
        ja.add("3");
        ja.add("4");
        ja.add("5");
        
        ob.put("array", ja);        return ob;
    }    
    public static void main(String[] args) {// TODO Auto-generated method stubdemo_JsonArray djs=new demo_JsonArray();
        System.out.println("JSONArray的使用:"+djs.testJsonArray());
        
    }

}
Copier après la connexion
Formater la chaîne de sortie :

{"array": ["1","2","3","4","5"]
}
Copier après la connexion
3.

package com.snnu.json;import net.sf.json.JSONArray;import net.sf.json.JSONObject;public class demo_testJson {    
    
    public JSONObject test(){
        
        JSONObject jo=new JSONObject();
        jo.put("name", "张三");
        jo.put("sex","f");
        jo.put("age",21);
        
        Transport bike=new Transport("bike",250);
        jo.put("extra", bike);
        Transport car=new Transport("car",10000);
        jo.accumulate("extra", car);
        Transport motor=new Transport("motor",3000);
        jo.accumulate("extra", motor);
        
        System.out.println(jo);        //根据key值(为extra)取对应的valueString value=jo.getString("extra");
        System.out.println(value);        //将字符串转化为JSONArrayJSONArray jsar=JSONArray.fromObject(value);
        String str_2=String.valueOf(jsar.get(1));
        System.out.println(str_2);        //将字符串转化为JSONObjectJSONObject jsob=JSONObject.fromObject(str_2);
        System.out.println("名称:"+jsob.getString("name"));
        System.out.println("价钱:"+jsob.getString("price"));
        
        System.out.println("-------------------------------分界线-------------------------------------------");        return jo;
        
    }public static void main(String[] args) {// TODO Auto-generated method stubdemo_testJson dtj=new demo_testJson();
        System.out.println("综合测试:"+dtj.test());
    }

}
Copier après la connexion
Le résultat de sortie est :

{"name":"张三","sex":"f","age":21,"extra":[{"name":"bike","price":250},{"name":"car","price":10000},{"name":"motor","price":3000}]}
[{"name":"bike","price":250},{"name":"car","price":10000},{"name":"motor","price":3000}]
{"name":"car","price":10000}
名称:car
价钱:10000
-------------------------------分界线-------------------------------------------综合测试:{"name":"张三","sex":"f","age":21,"extra":[{"name":"bike","price":250},{"name":"car","price":10000},{"name":"motor","price":3000}]}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal