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; } }
相关推荐
JSON(JavaScript Object Notation)和Gson是Android开发中常用的数据序列化和反序列化工具,...以上就是关于“Android之json和gson数据解析最完整的代码例子”的详细介绍,希望对您在学习和使用JSON及Gson时有所帮助。
要将`Video`对象转换为JSON字符串,我们可以使用Gson的`Gson`类和`toJson()`方法: ```java import com.google.gson.Gson; // 创建一个Video对象 Video video = new Video(); video.setTitle("视频标题"); video....
例如,可以使用`JsonReader`和`JsonWriter`进行高效的读写操作。 六、总结 Gson库在Android开发中扮演着重要的角色,它的灵活性和高效性使得JSON数据的处理变得简单易行。无论是简单的对象转换,还是复杂的集合解析...
这个“我的gson学习例子”显然是一份关于如何使用Gson进行JSON操作的学习资料。下面我们将详细探讨Gson库的使用方法和相关知识点。 首先,我们要理解JSON(JavaScript Object Notation)是一种轻量级的数据交换格式...
开源的gson2.4代码,有需要的可以下载研究。gson-2.4-sources的jar包。请注意,不能直接导入使用!这是源代码包!
Gson是Google开发的一款Java库,用于在Java对象和JSON数据之间进行映射。这个库使得Java对象可以轻松地序列化为JSON格式,同时也可以从JSON字符串反序列化回Java对象。在本例中,我们将深入探讨如何使用Gson库进行...
Gson是Google开发的一款Java库,用于在Java对象和JSON数据之间进行映射。它的全称为Google Simple Serialization for Java,其主要目标是提供一个简单、高效的方式来将Java对象转换为JSON字符串,反之亦然。Gson库...
谷歌Gson库是Java开发中广泛使用的JSON解析和序列化工具,版本2.8.0是其一个稳定且功能丰富的版本。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。...
包含以下java源文件: ...com.google.gson.internal.bind.JsonTreeReader.class com.google.gson.internal.bind.JsonTreeWriter.class com.google.gson.internal.bind.MapTypeAdapterFactory.class ...
5. **流式API(JsonWriter和JsonReader)**:除了基本的转换方法,Gson还提供了JsonWriter和JsonReader接口,它们允许更细粒度的控制JSON的写入和读取,适用于处理大量JSON数据。 6. **复杂类型支持**:Gson能够...
本篇文章将深入探讨Gson 2.8.0和2.8.6这两个版本的区别,以及如何在不同Java环境下使用它们。 首先,我们来看看标题中的"gson2.8.0和2.8.6.rar"。这是一个压缩包文件,包含了Gson库的两个不同版本——2.8.0和2.8.6...
**Google的Gson库深度剖析及使用范本** 在当今的软件开发中,JSON...以上就是对Google Gson库的深度剖析和使用范本,通过这个指南,初学者可以快速掌握Gson库的基本用法和高级特性,从而更高效地处理JSON数据。
这个“GsonDemo小例子”显然涉及到如何使用Gson库进行JSON操作的基本概念和实践。 首先,我们需要了解JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成...
为了避免这种风险,开发者应谨慎处理JSON输入,或者使用Gson的`JsonReader`和`JsonParser`来控制输入的解析过程。 7. 性能:Gson在性能上表现优秀,尤其是在大量数据转换时,其高效的内存管理和算法设计使其成为...
对于复杂项目,可能还需要结合使用`@Keep`注解(如使用R8或D8编译器)或其他混淆工具的特性,以确保Gson库能够正确处理混淆后的代码。 参考博文:[链接](https://ujs-lifazhu.iteye.com/blog/1750820)提供了更多...
本文将深入探讨如何使用两个流行的Java库——Gson和Json-lib来解析和组装JSON数据。 **一、Gson库** Gson是由Google开发的一个Java库,它能将Java对象转换为JSON字符串,也能将JSON数据转换回等效的Java对象。使用...
Gson 库的强大之处在于其灵活性和简洁性,使得 JSON 序列化和反序列化变得更加简单。 首先,让我们深入了解一下 Gson 如何序列化 Java 对象。在提供的示例中,`Person` 类包含两个属性:`name`(String 类型)和 `...
本教程将深入探讨如何使用Gson库解析复杂的JSON实例,让你只需寥寥几行代码就能轻松处理JSON解析问题。 ### Gson库简介 Gson库的核心功能是将Java对象(如自定义类)转换为JSON字符串,反之亦然。这个库非常直观,...
Gson是Google开发的一款Java库,它允许Java对象和JSON数据之间进行相互转换。...使用Gson-2.8.0.jar,开发者可以获得稳定和高性能的JSON处理能力,而gson-master.zip中的源代码和文档则提供了学习和调试的宝贵资源。
在这个例子中,我们将使用Gson与AsyncTask结合,构建一个简单的POST请求示例。 1. 首先,创建一个Java实体类,它代表要发送到服务器的数据。例如: ```java public class User { private String name; private ...