`
jilong-liang
  • 浏览: 482641 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类

Gson解析微信自定义菜单多个Button的数组数据

    博客分类:
  • Json
阅读更多

 

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

 

 

分享到:
评论

相关推荐

    Gson解析之自定义序列化和反序列化

    在Java开发中,Gson库是一个非常常用的JSON解析和序列化工具,由Google提供。它允许我们将Java对象转换为对应的JSON字符串,同时也能将JSON数据转换回Java对象。本篇文章将深入探讨如何在使用Gson时进行自定义的序列...

    使用Gson解析Json数据

    1、生成Json数据 2、使用Gson解析Json数据(单个json对象、json数组和json对象内嵌json数组) // 这里有两篇好心人的博文,有详细的讲解 http://www.jb51.net/article/32547.htm ...

    Volley访问网络,Gson解析,自定义Adapter显示网络图片和文字

    Volley是一个高效的网络请求库,Gson则是强大的JSON解析工具,而自定义Adapter则用于将数据适配并展示在ListView或RecyclerView等视图上。 首先,我们来详细探讨Volley。Volley是由Google开发的网络库,其设计目标...

    Gson解析json数据

    在本文中,我们将深入探讨如何使用Gson解析JSON数据,包括处理简单JSON和复杂的JSON结构。 首先,我们要了解JSON的基本概念。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,...

    Gson解析(List和Map)格式json数据 - CSDN博客1

    当JSON数据以数组的形式存在时,我们可以使用Gson将其解析为`List`对象。以下是一个示例: ```java public class City { int id; String name; String code; String map; } public static void main(String[] ...

    GSON解析复杂的JSON数组 - CSDN博客1

    《GSON解析复杂的JSON数组详解》 在Java开发中,处理JSON数据是一项常见的任务,而GSON库...在处理如上示例中的JSON数组时,GSON的fromJson()方法配合自定义的实体类,可以高效地将JSON数据转化为易于操作的对象列表。

    Gson解析复杂Json实例,超简单

    通过使用Gson库,你可以轻松地解析复杂的JSON数据,避免了手动逐个解析JSONObject的繁琐过程。只需简单几步,就可以将JSON转换为易于处理的Java对象,极大地提高了开发效率。在实际项目中,合理利用Gson能让你的代码...

    Gson解析网络数据显示到listview上,加入万能适配器,适配器就10行,大家可以复制包用

    Gson解析网络数据显示到listview上,加入万能适配器,适配器就10行,大家可以复制包用,在log日记查看完整的Json数据,listview上我显示了title给大家看效果,适配器只要10行左右,简单易懂。

    使用Gson解析json数据

    本教程将重点介绍如何使用Gson库在Java环境中解析JSON数据。 Gson是Google提供的一款开源库,它能够将Java对象转换为对应的JSON字符串,也可以将JSON数据反序列化为Java对象。这对于处理JSON数据非常方便。在本示例...

    通过Gson解析Json文件

    在Java开发中,处理JSON数据是一项常见的任务,Gson库是由Google提供的一个强大的工具,用于在Java对象和JSON数据之间进行映射。本篇文章将详细阐述如何使用Gson库解析JSON文件,帮助开发者理解并掌握这一技能。 ...

    Android Studio下使用Google Gson解析Json数据示例

    在Android Studio中,Gson库可以帮助我们方便地解析和生成JSON数据。本篇文章将详细介绍如何在Android Studio环境下使用Google Gson解析Json数据。 首先,我们需要在项目中引入Gson库。打开build.gradle模块文件,...

    Gson解析复杂json数据

    Gson 解析复杂 JSON 数据 Gson 是一个由 Google 开发的 Java 库,用来将 Java 对象转换为 JSON 格式的字符串,以及将 JSON 字符串转换为 Java 对象。下面我们将讨论如何使用 Gson 解析复杂的 JSON 数据。 从给定的...

    Google Gson解析Json数据应用实例

    在“JsonApps”这个示例中,可能包含了各种使用Gson库解析和生成JSON数据的实际代码示例,包括如何处理复杂数据结构、自定义类型适配器的使用等。通过对这些示例的分析和实践,开发者能够更熟练地运用Gson来处理JSON...

    Gson解析JSON数据的入门级源码

    这个“Gson解析JSON数据的入门级源码”应该包含了一些基础示例,帮助初学者理解如何使用Gson进行JSON操作。现在,我们将深入探讨Gson库的关键特性和使用方法。 **Gson库的引入** 首先,要使用Gson,你需要在项目中...

    JSON、GSON解析json

    4. 解析复杂JSON数据:如果JSON数据包含嵌套的对象或数组,GSON可以自动处理。例如,如果有如下JSON: ```json { "user": { "name": "John", "age": 30 }, "friends": [ { "name": "Jane", "age": 28 }, ...

    Android Gson解析案例

    这个“Android Gson解析案例”涵盖了如何在Android应用程序中有效地使用Gson库处理JSON数据,特别是处理可变长数据的情况。 首先,让我们了解什么是JSON(JavaScript Object Notation)。JSON是一种轻量级的数据...

    Gson解析JSON中动态未知key的例程源码

    在这种情况下,Gson库提供了灵活的方式来解析这类数据。以下将详细解释如何使用Gson来解析含有动态未知key的JSON。 首先,让我们理解JSON数据的基本结构。JSON(JavaScript Object Notation)是一种轻量级的数据...

    Android使用Kotlin利用Gson解析多层嵌套Json数据

    Android使用Kotlin利用Gson解析多层嵌套Json数据

    Android利用Gson解析嵌套多层的Json的简单方法

    Gson库是由Google提供的一个用于在Java对象和JSON数据之间进行映射的Java库,它使得解析和序列化JSON变得非常方便。本篇文章将详细介绍如何使用Gson解析嵌套多层的JSON数据。 首先,我们需要了解JSON的基本结构。...

    使用gson解析json

    Gson提供了一个简单的API,用于解析和生成JSON数据。使用Gson可以简化JSON数据的处理,提高开发效率。 FastJson是阿里巴巴推出的一个高性能的JSON解析器库,提供了快速和高效的JSON解析和生成功能。FastJson支持...

Global site tag (gtag.js) - Google Analytics