`
jilong-liang
  • 浏览: 484135 次
  • 性别: 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字符串

    在Java编程中,Gson库是一个非常常用的工具,它由Google提供,用于在Java对象和JSON数据之间进行互相转换。本文将深入探讨如何使用Gson处理泛型,并将其转换为JSON字符串。 首先,理解泛型在Java中的作用是至关重要...

    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利用Gson解析嵌套多层的Json的简单方法

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

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

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

Global site tag (gtag.js) - Google Analytics