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

gson的JsonTreeReader和JsonReader一起使用代码详解例子

    博客分类:
  • Json
阅读更多
package com.app.json;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import com.google.gson.Gson;
import com.google.gson.JsonElement;
import com.google.gson.JsonParser;
import com.google.gson.internal.bind.JsonTreeReader;
import com.google.gson.stream.JsonReader;

/**
 *@DEMO:napp
 *@Author:jilongliang
 *@Date:2013-7-21
 */
public class GsonTreeReader {
	private static Gson gson = new Gson();
	public static void main(String[] args) throws Exception {
		/**
		  * 组装address对象的数据
		  */
		 Map<String, String> address = new HashMap <String, String>(); 
		 address.put("province", "广东省");
		 address.put("city", "广州市");
		 address.put("district", "天河区");
		 address.put("street", "棠东"); 
		 /**
		  * 组装users对象的数据
		  */
		 Map<String, String> users = new HashMap <String, String>(); 
		 users.put("username", "liangjilong");
		 users.put("age", "25");
		 users.put("tel", "12396878");
		 users.put("email", "jilongliang@sina.com"); 
		 
		 Map<Object, Object> listsObj = new HashMap <Object, Object>(); 
		 listsObj.put("address",address);//address节点
		 listsObj.put("users",users);//users节点
		 
		 Object obj=listsObj;//转换成对象
		 
		 Map<Object, Object> info = new HashMap <Object, Object>(); 
		 info.put("info", obj);//json的根节点
		 
		 
        String json=gson.toJson(info);//转换成json数据
        System.out.println(json);//打印json数据
		
		readJsonData(json);
		
	}
	/**JsonReader
	 * JsonTreeReader从文件读取json数据
	 * @param in
	 * @throws Exception
	 */
	public static void readJsonData(String json) throws Exception {
		//创建JsonParser对象
		JsonParser parser = new JsonParser();
		JsonElement jsonEl = parser.parse(json);
		//创建一个JsonTreeReader对像用JsonReader
		JsonReader reader = new JsonTreeReader(jsonEl);
		try {
			reader.beginObject();
			String tagName = reader.nextName();
			if (tagName.equals("info")) {
				readInfo(reader);
			}
			reader.endObject();
		} finally {
			reader.close();
		}
	}
	/**
	 * 读取json的父(根,第一个)节点
	 * @param reader
	 * @throws Exception
	 */
	public static void readInfo(JsonReader reader) throws Exception {
		reader.beginObject();
		while (reader.hasNext()) {
			String tagName = reader.nextName();
			if (tagName.equals("address")) {
				readAddress(reader);
			} else if (tagName.equals("users")) {
				readUsers(reader);
			} 
		}
		reader.endObject();
	}
	/**
	 * 读取用户信息值
	 * @param reader
	 * @throws IOException
	 */
	public static void readUsers(JsonReader reader) throws IOException {
		reader.beginObject();
		while (reader.hasNext()) {
			String tag = reader.nextName();
			if (tag.equals("username")) {
				String username = reader.nextString();
				System.out.println("用户名:" + username);
			} else if (tag.equals("email")) {
				String email = reader.nextString();
				System.out.println("Email:" + email);
			} else if (tag.equals("tel")) {
				String tel = reader.nextString();
				System.out.println("电话:" + tel);
			}else if (tag.equals("age")) {
				String age = reader.nextString();
				System.out.println("年龄:" + age);
			} else {
				reader.skipValue();//忽略值/跳过break
			}
		}
		reader.endObject();
	}
	/**
	 * 读取地区值
	 * @param reader
	 * @throws IOException
	 */
	public static void readAddress(JsonReader reader) throws IOException {
		reader.beginObject();
		while (reader.hasNext()) {
			String tag = reader.nextName();
			if (tag.equals("province")) {
				String province = reader.nextString();
				System.out.println("省份:" + province);
			} else if (tag.equals("city")) {
				String city = reader.nextString();
				System.out.println("街道:" + city);
			} else if (tag.equals("street")) {
				String street = reader.nextString();
				System.out.println("街道:" + street);
			}else if (tag.equals("district")) {
				String district = reader.nextString();
				System.out.println("区:" + district);
			} else {
				reader.skipValue();//忽略值/跳过break
			}
		}
		reader.endObject();
	}

}

 

package com.app.entity.duapp;

import java.io.Serializable;

import com.google.gson.annotations.Expose;
/**
 * Gson gson=new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
 * 创建Gson对象,没有@Expose注释的属性将不会被序列化
 * serialize序列化 默认 true
 * deserialize反序列化 默认 true
 */
public class Address implements Serializable{
	@Expose(serialize=false)// 序列化  /Address类已经序列化
	private int id;
	@Expose(deserialize=false)// 反序列化
	private String country;//国家
	private String province;//省份
	private String city;//城市
	private String street;//街道
	private String district;//地区
	private String cityCode;//邮政编码
	private String streetNumber;//街道号
	
	public Address() {
	}
	
	public Address(int id,String country) {
		this.id=id;
		this.country=country;
	}
	public String getCityCode() {
		return cityCode;
	}
	public void setCityCode(String cityCode) {
		this.cityCode = cityCode;
	}
	public String getStreetNumber() {
		return streetNumber;
	}
	public void setStreetNumber(String streetNumber) {
		this.streetNumber = streetNumber;
	}
	public String getStreet() {
		return street;
	}
	public void setStreet(String street) {
		this.street = street;
	}
	public String getDistrict() {
		return district;
	}
	public void setDistrict(String district) {
		this.district = district;
	}
	public String getCity() {
		return city;
	}
	public void setCity(String city) {
		this.city = city;
	}
	public String getProvince() {
		return province;
	}
	public void setProvince(String province) {
		this.province = province;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getCountry() {
		return country;
	}

	public void setCountry(String country) {
		this.country = country;
	}
	
}

 

0
1
分享到:
评论

相关推荐

    android之json和gson数据解析最完整的代码例子(包括各种样式的json数据)

    JSON(JavaScript Object Notation)和Gson是Android开发中常用的数据序列化和反序列化工具,...以上就是关于“Android之json和gson数据解析最完整的代码例子”的详细介绍,希望对您在学习和使用JSON及Gson时有所帮助。

    Gson处理Json格式字符串代码

    要将`Video`对象转换为JSON字符串,我们可以使用Gson的`Gson`类和`toJson()`方法: ```java import com.google.gson.Gson; // 创建一个Video对象 Video video = new Video(); video.setTitle("视频标题"); video....

    非常详细的gson使用方法

    例如,可以使用`JsonReader`和`JsonWriter`进行高效的读写操作。 六、总结 Gson库在Android开发中扮演着重要的角色,它的灵活性和高效性使得JSON数据的处理变得简单易行。无论是简单的对象转换,还是复杂的集合解析...

    我的gson学习例子

    这个“我的gson学习例子”显然是一份关于如何使用Gson进行JSON操作的学习资料。下面我们将详细探讨Gson库的使用方法和相关知识点。 首先,我们要理解JSON(JavaScript Object Notation)是一种轻量级的数据交换格式...

    gson-2.4源代码

    开源的gson2.4代码,有需要的可以下载研究。gson-2.4-sources的jar包。请注意,不能直接导入使用!这是源代码包!

    Gson解析的一个例子

    Gson是Google开发的一款Java库,用于在Java对象和JSON数据之间进行映射。这个库使得Java对象可以轻松地序列化为JSON格式,同时也可以从JSON字符串反序列化回Java对象。在本例中,我们将深入探讨如何使用Gson库进行...

    Gson基本使用方法

    Gson是Google开发的一款Java库,用于在Java对象和JSON数据之间进行映射。它的全称为Google Simple Serialization for Java,其主要目标是提供一个简单、高效的方式来将Java对象转换为JSON字符串,反之亦然。Gson库...

    谷歌 Gson2.8.0 依赖包、文档和源码

    谷歌Gson库是Java开发中广泛使用的JSON解析和序列化工具,版本2.8.0是其一个稳定且功能丰富的版本。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。...

    googleGson JsonObject json转换包

    包含以下java源文件: ...com.google.gson.internal.bind.JsonTreeReader.class com.google.gson.internal.bind.JsonTreeWriter.class com.google.gson.internal.bind.MapTypeAdapterFactory.class ...

    Gson的三个jar包

    5. **流式API(JsonWriter和JsonReader)**:除了基本的转换方法,Gson还提供了JsonWriter和JsonReader接口,它们允许更细粒度的控制JSON的写入和读取,适用于处理大量JSON数据。 6. **复杂类型支持**:Gson能够...

    gson2.8.0和2.8.6.rar

    本篇文章将深入探讨Gson 2.8.0和2.8.6这两个版本的区别,以及如何在不同Java环境下使用它们。 首先,我们来看看标题中的"gson2.8.0和2.8.6.rar"。这是一个压缩包文件,包含了Gson库的两个不同版本——2.8.0和2.8.6...

    Google之Gson库深度剖析及使用范本

    **Google的Gson库深度剖析及使用范本** 在当今的软件开发中,JSON...以上就是对Google Gson库的深度剖析和使用范本,通过这个指南,初学者可以快速掌握Gson库的基本用法和高级特性,从而更高效地处理JSON数据。

    GsonDemo小例子

    这个“GsonDemo小例子”显然涉及到如何使用Gson库进行JSON操作的基本概念和实践。 首先,我们需要了解JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成...

    gson-2.6.2.zip

    为了避免这种风险,开发者应谨慎处理JSON输入,或者使用Gson的`JsonReader`和`JsonParser`来控制输入的解析过程。 7. 性能:Gson在性能上表现优秀,尤其是在大量数据转换时,其高效的内存管理和算法设计使其成为...

    android gson 混淆代码 问题

    对于复杂项目,可能还需要结合使用`@Keep`注解(如使用R8或D8编译器)或其他混淆工具的特性,以确保Gson库能够正确处理混淆后的代码。 参考博文:[链接](https://ujs-lifazhu.iteye.com/blog/1750820)提供了更多...

    使用Gson和Json-lib去解析json和组装Json数据例子

    本文将深入探讨如何使用两个流行的Java库——Gson和Json-lib来解析和组装JSON数据。 **一、Gson库** Gson是由Google开发的一个Java库,它能将Java对象转换为JSON字符串,也能将JSON数据转换回等效的Java对象。使用...

    Gson简要使用笔记

    Gson 库的强大之处在于其灵活性和简洁性,使得 JSON 序列化和反序列化变得更加简单。 首先,让我们深入了解一下 Gson 如何序列化 Java 对象。在提供的示例中,`Person` 类包含两个属性:`name`(String 类型)和 `...

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

    本教程将深入探讨如何使用Gson库解析复杂的JSON实例,让你只需寥寥几行代码就能轻松处理JSON解析问题。 ### Gson库简介 Gson库的核心功能是将Java对象(如自定义类)转换为JSON字符串,反之亦然。这个库非常直观,...

    Gson jar包 2.8版本含源代码和文档。最好用且强大的java json包,没有之一.Google出品

    Gson是Google开发的一款Java库,它允许Java对象和JSON数据之间进行相互转换。...使用Gson-2.8.0.jar,开发者可以获得稳定和高性能的JSON处理能力,而gson-master.zip中的源代码和文档则提供了学习和调试的宝贵资源。

    google gson 异步post访问服务器的例子。

    在这个例子中,我们将使用Gson与AsyncTask结合,构建一个简单的POST请求示例。 1. 首先,创建一个Java实体类,它代表要发送到服务器的数据。例如: ```java public class User { private String name; private ...

Global site tag (gtag.js) - Google Analytics