java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 程序设计语言和 Java 平台(即 JavaEE(j2ee), JavaME(j2me), JavaSE(j2se))的总称。
这篇文章主要给大家介绍了关于 Java 中利用 gson 解析 Json 的相关资料,文中给出了详细的示例代码供大家参考学习,相信对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
前言
本文主要跟大家介绍了关于 Java 用 gson 解析 Json 的相关内容,分享出来供大家参考学习,需要的朋友们下面来一起看看吧。
json 数据
- {
- "resultcode": "200",
- "reason": "successed!",
- "result": {
- "sk": {
- "temp": "24",
- "wind_direction": "西南风",
- "wind_strength": "2级",
- "humidity": "51%",
- "time": "10:11"
- },
- "today": {
- "temperature": "16℃~27℃",
- "weather": "阴转多云",
- "weather_id": {
- "fa": "02",
- "fb": "01"
- },
- "wind": "西南风3-4 级",
- "week": "星期四",
- "city": "滨州",
- "date_y": "2015年06月04日",
- "dressing_index": "舒适",
- "dressing_advice": "建议着长袖T恤、衬衫加单裤等服装。年老体弱者宜着针织长袖衬衫、马甲和长裤。",
- "uv_index": "最弱",
- "comfort_index": "",
- "wash_index": "较适宜",
- "travel_index": "",
- "exercise_index": "较适宜",
- "drying_index": ""
- },
- "future": [
- {
- "temperature": "16℃~27℃",
- "weather": "阴转多云",
- "weather_id": {
- "fa": "02",
- "fb": "01"
- },
- "wind": "西南风3-4 级",
- "week": "星期四",
- "date": "20150604"
- },
- {
- "temperature": "20℃~32℃",
- "weather": "多云转晴",
- "weather_id": {
- "fa": "01",
- "fb": "00"
- },
- "wind": "西风3-4 级",
- "week": "星期五",
- "date": "20150605"
- },
- {
- "temperature": "23℃~35℃",
- "weather": "多云转阴",
- "weather_id": {
- "fa": "01",
- "fb": "02"
- },
- "wind": "西南风3-4 级",
- "week": "星期六",
- "date": "20150606"
- },
- {
- "temperature": "20℃~33℃",
- "weather": "多云",
- "weather_id": {
- "fa": "01",
- "fb": "01"
- },
- "wind": "北风微风",
- "week": "星期日",
- "date": "20150607"
- },
- {
- "temperature": "22℃~34℃",
- "weather": "多云",
- "weather_id": {
- "fa": "01",
- "fb": "01"
- },
- "wind": "西南风3-4 级",
- "week": "星期一",
- "date": "20150608"
- },
- {
- "temperature": "22℃~33℃",
- "weather": "阴",
- "weather_id": {
- "fa": "02",
- "fb": "02"
- },
- "wind": "西南风3-4 级",
- "week": "星期二",
- "date": "20150609"
- },
- {
- "temperature": "22℃~33℃",
- "weather": "多云",
- "weather_id": {
- "fa": "01",
- "fb": "01"
- },
- "wind": "南风3-4 级",
- "week": "星期三",
- "date": "20150610"
- }
- ]
- },
- "error_code": 0
- }
解析 JSONObject
- import com.google.gson.JsonObject;
- import com.google.gson.JsonParser;
- import com.google.gson.JsonSyntaxException;
- import com.google.gson.JsonIOException;
- import java.io.FileNotFoundException;
- import java.io.FileReader;
- public class ReadJson {
- public static void main(String[] args) {
- JsonParser parse = new JsonParser();
- try {
- JsonObject json = (JsonObject) parse.parse(new FileReader("weather.json"));
- System.out.println("resultcode:" + json.get("resultcodeu").getAsInt());
- System.out.println("reason:" + json.get("reason").getAsString());
- JsonObject result = json.get("result").getAsJsonObject();
- JsonObject today = result.get("today").getAsJsonObject();
- System.out.println("weak:" + today.get("week").getAsString());
- System.out.println("weather:" + today.get("weather").getAsString());
- } catch(JsonIOException e) {
- e.printStackTrace();
- } catch(NullPointerException e) {
- e.printStackTrace();
- } catch(JsonSyntaxException e) {
- e.printStackTrace();
- } catch(FileNotFoundException e) {
- e.printStackTrace();
- }
- }
- }
解析 JSONArray
- import com.google.gson.JsonParser;
- import com.google.gson.JsonArray;
- import com.google.gson.JsonObject;
- import com.google.gson.JsonSyntaxException;
- import com.google.gson.JsonIOException;
- import java.io.FileNotFoundException;
- import java.io.FileReader;
- public class ReadJsonArray {
- public static void main(String[] args) {
- JsonParser parse = new JsonParser();
- try {
- JsonObject json = (JsonObject) parse.parse(new FileReader("C:\\Users\\wzh94434\\IdeaProjects\\TestProject\\jsontest\\src\\main\\java\\weather.json"));
- JsonObject result = json.get("result").getAsJsonObject();
- JsonArray futureArray = result.get("future").getAsJsonArray();
- for (int i = 0; i < futureArray.size(); ++i) {
- JsonObject subObj = futureArray.get(i).getAsJsonObject();
- System.out.println("------");
- System.out.println("week:" + subObj.get("week").getAsString());
- System.out.println("weather:" + subObj.get("weather").getAsString());
- }
- } catch(FileNotFoundException e) {
- e.printStackTrace();
- } catch(JsonIOException e) {
- e.printStackTrace();
- } catch(JsonSyntaxException e) {
- e.printStackTrace();
- }
- }
- }
注意:文件路径相对路径是从工程根目录开始
总结
来源: http://www.phperz.com/article/17/1227/356873.html