package com.common; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; /** *@Author:jilongliang *@Email:jilongliang@sina.com *@Date:2014-1-4 *@CopyRight:liangjilong *@Description: */ public class FileUtils { private static String content = "", line = System .getProperty("line.separator");// 换行相当于\n public static String reader(File file) { FileReader read = null; BufferedReader reader = null; try { read = new FileReader(file); reader = new BufferedReader(read); StringBuffer buffer = new StringBuffer(""); content = reader.readLine(); while (content != null) { buffer.append(content).append(line); content = reader.readLine(); } return content = buffer.toString();// 返回 } catch (Exception e) { e.printStackTrace(); } finally { try { if (reader != null) reader.close(); if (read != null) read.close(); } catch (Exception e) { e.printStackTrace(); } } return "";// 没值就返回空 } }
package com.entity; import java.io.Serializable; import java.util.List; /** *@Author:jilongliang *@Email:jilongliang@sina.com *@Date:2014-1-4 *@CopyRight:liangjilong *@Description: */ public class Button implements Serializable{ private String name; private List<SubButton> sub; public String getName() { return name; } public void setName(String name) { this.name = name; } public List<SubButton> getSub() { return sub; } public void setSub(List<SubButton> sub) { this.sub = sub; } }
package com.entity; import java.io.Serializable; import java.util.List; /** *@Author:jilongliang *@Email:jilongliang@sina.com *@Date:2014-1-4 *@CopyRight:liangjilong *@Description: */ public class Menu implements Serializable{ private List<Button> Button; public List<Button> getButton() { return Button; } public void setButton(List<Button> button) { Button = button; } }
package com.entity; import java.io.Serializable; /** *@Author:jilongliang *@Email:jilongliang@sina.com *@Date:2014-1-4 *@CopyRight:liangjilong *@Description: */ public class SubButton implements Serializable{ private String type; private String name; private String url; private String key; public String getType() { return type; } public void setType(String type) { this.type = type; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public String getKey() { return key; } public void setKey(String key) { this.key = key; } }
package com.json; import java.io.File; import java.net.URL; import java.util.Iterator; import com.common.FileUtils; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParser; /** *@Author:jilongliang *@Email:jilongliang@sina.com *@Date:2014-1-4 *@CopyRight:liangjilong *@Description: */ public class DoJson1 { public static void main(String[] args) { //读取文件的json数据这样就不会那么容易些字符串那么眼花 O(∩_∩)O哈哈~ URL URL = DoJson1.class.getClassLoader().getResource("json"); File file = new File(URL.getFile()); String jsonText=FileUtils.reader(file); String responseData=jsonText; JsonParser parser = new JsonParser(); JsonElement jsonEl = parser.parse(responseData); JsonObject jsonObjRoot = null; if (jsonEl.isJsonObject()) { jsonObjRoot = jsonEl.getAsJsonObject(); JsonElement menuEl=jsonObjRoot.get("menu");//menu节点 JsonElement buttonEl=menuEl.getAsJsonObject().get("button");//button节点 boolean flag=buttonEl.isJsonArray();//是否为Json数组 if(flag){ JsonArray jsonArray= buttonEl.getAsJsonArray();//转为数组 ///////////////最大的Menu节点/////////// for(Iterator iter=jsonArray.iterator();iter.hasNext();){ JsonObject jop=(JsonObject) iter.next(); String name=jop.get("name").getAsString(); System.out.println(name);//将最大自定义菜单的Button按钮打印出来 ///////////////////sub_button/Begin////////////// JsonElement sub_buttonEl=jop.get("sub_button");//sub_button节点 boolean flag1=sub_buttonEl.isJsonArray();//是否为Json数组 if(flag1){ JsonArray jsonArray1= sub_buttonEl.getAsJsonArray();//转为数组 String url="",key=""; for (Iterator iterator = jsonArray1.iterator(); iterator.hasNext();) { JsonObject jop1=(JsonObject) iterator.next(); String type=jop1.get("type").getAsString(); String name1=jop1.get("name").getAsString(); //判断这个url的key不是为空的时候就拿出来 if(jop1.has("url")){ url=jop1.get("url").getAsString(); } else{ key=jop1.get("key").getAsString(); } System.out.println(name1+"\t"+type+"\t"+url+"\t"+key+"\n"); } } } } } } }
package com.json; import java.io.File; import java.net.URL; import java.util.Iterator; import com.common.FileUtils; import com.entity.Button; import com.entity.SubButton; import com.google.gson.Gson; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParser; /** *@Author:jilongliang *@Email:jilongliang@sina.com *@Date:2014-1-4 *@CopyRight:liangjilong *@Description: */ public class DoJson { public static void main(String[] args) { URL URL = DoJson1.class.getClassLoader().getResource("json.txt"); File file = new File(URL.getFile()); String responseData=FileUtils.reader(file); JsonParser parser = new JsonParser(); JsonElement jsonEl = parser.parse(responseData); JsonObject jsonObjRoot = null; if (jsonEl.isJsonObject()) { jsonObjRoot = jsonEl.getAsJsonObject(); JsonElement menuEl=jsonObjRoot.get("menu");//menu节点 JsonElement buttonEl=menuEl.getAsJsonObject().get("button");//button节点 boolean flag=buttonEl.isJsonArray();//是否为Json数组 if(flag){ JsonArray jsonArray= buttonEl.getAsJsonArray();//转为数组 ///////////////最大的Menu节点/////////// for(Iterator iter=jsonArray.iterator();iter.hasNext();){ JsonObject jop=(JsonObject) iter.next(); Button b=new Gson().fromJson(jop, Button.class); System.out.println("最大的节点"+b.getName());//将最大自定义菜单的Button按钮打印出来 ///////////////////sub_button/Begin////////////// JsonElement sub_buttonEl=jop.get("sub_button");//sub_button节点 boolean flag1=sub_buttonEl.isJsonArray();//是否为Json数组 if(flag1){ JsonArray jsonArray1= sub_buttonEl.getAsJsonArray();//转为数组 String url="",key=""; for (Iterator iterator = jsonArray1.iterator(); iterator.hasNext();) { JsonObject jop1=(JsonObject) iterator.next(); SubButton subButton=new Gson().fromJson(jop1, SubButton.class);//方法二:灵活使用Gson取数据 //判断这个url的key不是为空的时候就拿出来 if(jop1.has("url")){ url=jop1.get("url").getAsString(); } else{ key=jop1.get("key").getAsString(); } System.out.println(subButton.getName()+"\t"+subButton.getType()+"\t"+url+"\t"+key+"\n"); } } } } } } }
{"menu": {"button": [ {"sub_button": [ {"type":"click","key":"A1","name":"天气预报"}, {"type":"click","key":"A2","name":"公交查询"}, {"type":"click","key":"A3","name":"地方搜索"}, {"type":"click","key":"A4","name":"互译在线"} ],"name":"生活助手" }, {"sub_button": [ {"type":"click","key":"B1","name":"音乐点播"}, {"type":"click","key":"B2","name":"经典游戏"}, {"type":"click","key":"B3","name":"美女电台"}, {"type":"click","key":"B4","name":"人脸识别"}, {"type":"click","key":"B5","name":"天文星座"} ],"name":"休闲驿站" }, {"sub_button": [ {"type":"click","key":"C1","name":"短信服务"}, {"type":"click","key":"C2","name":"新闻联播"}, {"type":"click","key":"C3","name":"影视在线"}, {"type":"click","key":"C4","name":"幽默笑话"}, {"type":"view","url":"http://weibo.com/resourceljl","name":"关于我们"} ],"name":"更多体验"} ] } }
package com.json; import java.util.Iterator; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParser; /** *@Author:jilongliang *@Email:jilongliang@sina.com *@Date:2014-1-4 *@CopyRight:liangjilong *@Description: */ public class DoJson2 { public static void main(String[] args) { StringBuffer buffer=new StringBuffer(); buffer.append("{\"menu\":"); buffer.append("{\"button\":"); buffer.append("["); buffer.append("{\"name\":\"生活助手\",\"sub_button\":"); buffer.append("["); buffer.append("{\"type\":\"click\",\"name\":\"帮助手册\",\"url\":\"http://me2dorg.duapp.com/common/helper.html\",\"sub_button\":[]},"); buffer.append("{\"type\":\"click\",\"name\":\"股票财经\",\"key\":\"14\",\"sub_button\":[]},"); buffer.append("{\"type\":\"click\",\"name\":\"短信阅读\",\"key\":\"11\",\"sub_button\":[]},"); buffer.append("{\"type\":\"click\",\"name\":\"短信笑话\",\"key\":\"13\",\"sub_button\":[]}"); buffer.append("]"); buffer.append("},"); buffer.append("{\"name\":\"新闻博览\",\"sub_button\":"); buffer.append("["); buffer.append("{\"type\":\"click\",\"name\":\"新闻阅读\",\"key\":\"10\",\"sub_button\":[]},"); buffer.append("{\"type\":\"click\",\"name\":\"股票财经\",\"key\":\"14\",\"sub_button\":[]},"); buffer.append("{\"type\":\"click\",\"name\":\"短信阅读\",\"key\":\"11\",\"sub_button\":[]},"); buffer.append("{\"type\":\"view\",\"name\":\"在线帮助\",\"url\":\"http://me2dorg.duapp.com/common/helper.html\",\"sub_button\":[]}"); buffer.append("]"); buffer.append("},"); buffer.append("{\"name\":\"游戏娱乐\",\"sub_button\":"); buffer.append("["); buffer.append("{\"type\":\"click\",\"name\":\"新闻阅读\",\"key\":\"10\",\"sub_button\":[]},"); buffer.append("{\"type\":\"click\",\"name\":\"股票财经\",\"key\":\"14\",\"sub_button\":[]},"); buffer.append("{\"type\":\"click\",\"name\":\"短信阅读\",\"key\":\"11\",\"sub_button\":[]},"); buffer.append("{\"type\":\"view\",\"name\":\"帮助手册\",\"url\":\"http://me2dorg.duapp.com/common/helper.html\",\"sub_button\":[]}"); buffer.append("]"); buffer.append("}"); buffer.append("]"); buffer.append("}"); buffer.append("}"); String responseData=buffer.toString(); JsonParser parser = new JsonParser(); JsonElement jsonEl = parser.parse(responseData); JsonObject jsonObjRoot = null; if (jsonEl.isJsonObject()) { jsonObjRoot = jsonEl.getAsJsonObject(); JsonElement menuEl=jsonObjRoot.get("menu");//menu节点 JsonElement buttonEl=menuEl.getAsJsonObject().get("button");//button节点 boolean flag=buttonEl.isJsonArray();//是否为Json数组 if(flag){ JsonArray jsonArray= buttonEl.getAsJsonArray();//转为数组 ///////////////最大的Menu节点/////////// for(Iterator iter=jsonArray.iterator();iter.hasNext();){ JsonObject jop=(JsonObject) iter.next(); String name=jop.get("name").getAsString(); System.out.println(name);//将最大自定义菜单的Button按钮打印出来 ///////////////////sub_button/Begin////////////// JsonElement sub_buttonEl=jop.get("sub_button");//sub_button节点 boolean flag1=sub_buttonEl.isJsonArray();//是否为Json数组 if(flag1){ JsonArray jsonArray1= sub_buttonEl.getAsJsonArray();//转为数组 String url="",key=""; for (Iterator iterator = jsonArray1.iterator(); iterator.hasNext();) { JsonObject jop1=(JsonObject) iterator.next(); String type=jop1.get("type").getAsString(); String name1=jop1.get("name").getAsString(); //判断这个url的key不是为空的时候就拿出来 if(jop1.has("url")){ url=jop1.get("url").getAsString(); } else{ key=jop1.get("key").getAsString(); } System.out.println(name1+"\t"+type+"\t"+url+"\t"+key+"\n"); } } } } } } }
相关推荐
在Java开发中,Gson库是一个非常常用的JSON解析和序列化工具,由Google提供。它允许我们将Java对象转换为对应的JSON字符串,同时也能将JSON数据转换回Java对象。本篇文章将深入探讨如何在使用Gson时进行自定义的序列...
1、生成Json数据 2、使用Gson解析Json数据(单个json对象、json数组和json对象内嵌json数组) // 这里有两篇好心人的博文,有详细的讲解 http://www.jb51.net/article/32547.htm ...
Volley是一个高效的网络请求库,Gson则是强大的JSON解析工具,而自定义Adapter则用于将数据适配并展示在ListView或RecyclerView等视图上。 首先,我们来详细探讨Volley。Volley是由Google开发的网络库,其设计目标...
在本文中,我们将深入探讨如何使用Gson解析JSON数据,包括处理简单JSON和复杂的JSON结构。 首先,我们要了解JSON的基本概念。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,...
当JSON数据以数组的形式存在时,我们可以使用Gson将其解析为`List`对象。以下是一个示例: ```java public class City { int id; String name; String code; String map; } public static void main(String[] ...
《GSON解析复杂的JSON数组详解》 在Java开发中,处理JSON数据是一项常见的任务,而GSON库...在处理如上示例中的JSON数组时,GSON的fromJson()方法配合自定义的实体类,可以高效地将JSON数据转化为易于操作的对象列表。
通过使用Gson库,你可以轻松地解析复杂的JSON数据,避免了手动逐个解析JSONObject的繁琐过程。只需简单几步,就可以将JSON转换为易于处理的Java对象,极大地提高了开发效率。在实际项目中,合理利用Gson能让你的代码...
Gson解析网络数据显示到listview上,加入万能适配器,适配器就10行,大家可以复制包用,在log日记查看完整的Json数据,listview上我显示了title给大家看效果,适配器只要10行左右,简单易懂。
本教程将重点介绍如何使用Gson库在Java环境中解析JSON数据。 Gson是Google提供的一款开源库,它能够将Java对象转换为对应的JSON字符串,也可以将JSON数据反序列化为Java对象。这对于处理JSON数据非常方便。在本示例...
在Java开发中,处理JSON数据是一项常见的任务,Gson库是由Google提供的一个强大的工具,用于在Java对象和JSON数据之间进行映射。本篇文章将详细阐述如何使用Gson库解析JSON文件,帮助开发者理解并掌握这一技能。 ...
在Android Studio中,Gson库可以帮助我们方便地解析和生成JSON数据。本篇文章将详细介绍如何在Android Studio环境下使用Google Gson解析Json数据。 首先,我们需要在项目中引入Gson库。打开build.gradle模块文件,...
Gson 解析复杂 JSON 数据 Gson 是一个由 Google 开发的 Java 库,用来将 Java 对象转换为 JSON 格式的字符串,以及将 JSON 字符串转换为 Java 对象。下面我们将讨论如何使用 Gson 解析复杂的 JSON 数据。 从给定的...
在“JsonApps”这个示例中,可能包含了各种使用Gson库解析和生成JSON数据的实际代码示例,包括如何处理复杂数据结构、自定义类型适配器的使用等。通过对这些示例的分析和实践,开发者能够更熟练地运用Gson来处理JSON...
这个“Gson解析JSON数据的入门级源码”应该包含了一些基础示例,帮助初学者理解如何使用Gson进行JSON操作。现在,我们将深入探讨Gson库的关键特性和使用方法。 **Gson库的引入** 首先,要使用Gson,你需要在项目中...
4. 解析复杂JSON数据:如果JSON数据包含嵌套的对象或数组,GSON可以自动处理。例如,如果有如下JSON: ```json { "user": { "name": "John", "age": 30 }, "friends": [ { "name": "Jane", "age": 28 }, ...
这个“Android Gson解析案例”涵盖了如何在Android应用程序中有效地使用Gson库处理JSON数据,特别是处理可变长数据的情况。 首先,让我们了解什么是JSON(JavaScript Object Notation)。JSON是一种轻量级的数据...
在这种情况下,Gson库提供了灵活的方式来解析这类数据。以下将详细解释如何使用Gson来解析含有动态未知key的JSON。 首先,让我们理解JSON数据的基本结构。JSON(JavaScript Object Notation)是一种轻量级的数据...
Android使用Kotlin利用Gson解析多层嵌套Json数据
Gson库是由Google提供的一个用于在Java对象和JSON数据之间进行映射的Java库,它使得解析和序列化JSON变得非常方便。本篇文章将详细介绍如何使用Gson解析嵌套多层的JSON数据。 首先,我们需要了解JSON的基本结构。...
Gson提供了一个简单的API,用于解析和生成JSON数据。使用Gson可以简化JSON数据的处理,提高开发效率。 FastJson是阿里巴巴推出的一个高性能的JSON解析器库,提供了快速和高效的JSON解析和生成功能。FastJson支持...