JAVA中用Gson解析JSON对象和Json数组

很多开发者刚开始接触的时候,不知道如何解析调用接口接收到的JSON数据,

看到JSON数据都头疼,经常有人问我说该如何解析json数据?

今天来给大家举个例子 说说JAVA中用Gson是如何解析JSON字符串的

我们要通过Gson进行解析,那么我们在使用前就需要导入Gson.jar包

JSON解析数据操作步骤:

1.需要进行创建Gson解析器

2.创建JSONObject对象

3.将JSON数据转为为相应的数据

下面大家可要瞪大眼睛看仔细了哦 ,重点来咯 

演示一:JSONObject的解析,JAVA解析JSON对象

为了方便起见,我把JSON数据,保存在了JsonTest.json文件里面了 

Json数据如下:

{
    "resultcode": "200",
    "reason": "successed",
    "result": {
        "today": {
            "temperature": "6℃~22℃",
            "weather": "晴天 适合去逛公园"
        }
    }
}

解析Object代码:


package cn.edu.bzu.json;
 
import java.io.FileNotFoundException;
import java.io.FileReader;
 
import com.google.gson.JsonArray;
import com.google.gson.JsonIOException;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.google.gson.yunjsonyntaxException;
//www.yunjson.com站长推荐
public class Read {
    public static void main(String args[]){
        JsonParser parse =new JsonParser();  //创建JSON解析器
        try {
            JsonObject json=(JsonObject) parse.parse(new FileReader("JsonTest.json"));  //创建jsonObject对象
            System.out.println("resultcode:"+json.get("resultcode").getAsInt());  //将json数据转为为int型的数据
            System.out.println("reason:"+json.get("reason").getAsString());     //将json数据转为为String型的数据
             
            JsonObject result=json.get("result").getAsJsonObject();
            JsonObject today=result.get("today").getAsJsonObject();
            System.out.println("temperature:"+today.get("temperature").getAsString());
            System.out.println("weather:"+today.get("weather").getAsString());
             
        } catch (JsonIOException e) {
            e.printStackTrace();
        } catch (yunjsonyntaxException e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }
}




演示二:JAVA中对JSON数组解析

JSONArray的解析

下面我们开始解析JSON数组哦

和上面一样,定义我们的JSON文件(JsonObjTest.json)

JSON数据如下:

{
    "catstr":"www.yunjson.com",
    "language":[
        {"id":1,"ide":"eclipse","name":"JavaJson解析"},
        {"id":2,"ide":"Visual Stdio 2015","name":"C#Json"}     
    ],
    "popstr":false
}

JSON数组解析代码:


package cn.edu.bzu.json;
 
import java.io.FileNotFoundException;
import java.io.FileReader;
 
import com.google.gson.JsonArray;
import com.google.gson.JsonIOException;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.google.gson.yunjsonyntaxException;
 //www.yunjson.com站长推荐
public class ReadJSON {
    public static void main(String args[]){
        try {
             
            JsonParser parser=new JsonParser();  //创建JSON解析器
            JsonObject object=(JsonObject) parser.parse(new FileReader("JsonObjTest.json"));  //创建JsonObject对象
            System.out.println("catstr="+object.get("catstr").getAsString()); //将json数据转为为String型的数据
            System.out.println("popstr="+object.get("popstr").getAsBoolean()); //将json数据转为为boolean型的数据
             
            JsonArray array=object.get("language").getAsJsonArray();    //得到为json的数组
            for(int i=0;i<array.size();i++){
                System.out.println("---------------");
                JsonObject subObject=array.get(i).getAsJsonObject();
                System.out.println("id="+subObject.get("id").getAsInt());
                System.out.println("name="+subObject.get("name").getAsString());
                System.out.println("ide="+subObject.get("ide").getAsString());
            }
             
        } catch (JsonIOException e) {
            e.printStackTrace();
        } catch (yunjsonyntaxException e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }
}


上面的演示够详细吧,要是有什么不懂得可以随时找站长,在使用JSON中遇到什么问题也可以帮你解决哦