虽然android自带了json处理,但是没有封装,总觉得不方便,网上找了gson的处理,觉得还行。
//转换器
GsonBuilder builder = new GsonBuilder();
// 不转换没有 @Expose 注解的字段
builder.excludeFieldsWithoutExposeAnnotation();
Gson gson = builder.create();
//1、对象转string
Student stu = new Student();
stu.setStudentId(333);
stu.setStudentName("qqq");
String stuStr = gson.toJson(stu);
System.out.println(stuStr); //{"studentName":"qqq","studentId":333}
//2、string转对象
Student user2 = gson.fromJson(stuStr, Student.class);
System.out.println(user2);
String stuTemp = "{\"studentName\":\"qqq2\",\"studentId\":3335}";
Student user4 = gson.fromJson(stuTemp, Student.class);
System.out.println(user4);
//3、对象List转string
List<Student> testBeanList = new ArrayList<Student>();
Student testBean = new Student();
testBean.setStudentId(555);
testBean.setStudentName("552");
testBeanList.add(testBean);
//Gson gsonList = new Gson();
Type type = new TypeToken<List<Student>>(){}.getType(); //指定集合对象属性
String beanListToJson = gson.toJson(testBeanList, type);
System.out.println(beanListToJson); //[{"studentName":"552","studentId":555}]
//集合string转对象list
List<Student> testBeanListFromJson = gson.fromJson(beanListToJson, type);
System.out.println(testBeanListFromJson); //[555:552]
//4、集合如果不指定类型 默认为String
List<String> testList = new ArrayList<String>();
testList.add("first");
testList.add("second");
String listToJson = gson.toJson(testList);
System.out.println(listToJson); //["first","second"]
//5、集合字符串转回来需要指定类型
List<String> testList2 = (List<String>) gson.fromJson(listToJson,
new TypeToken<List<String>>() {
}.getType());
System.out.println(testList2);
//6、 将HashMap字符串转换为 JSON
Map<String, String> testMap = new HashMap<String, String>();
testMap.put("id", "id.first");
testMap.put("name", "name.second");
String mapToJson = gson.toJson(testMap);
System.out.println(mapToJson); //{"id":"id.first","name":"name.second"}
//7、stringMap转对象
Map<String, String> userMap2 = (Map<String, String>) gson.fromJson(mapToJson,
new TypeToken<Map<String, String>>() {
}.getType());
System.out.println(userMap2); //{id=id.first, name=name.second}
//8、对象含有普通对象、集合、map情况
Student user1 = new Student();
user1.setStudentId(1001);
user1.setStudentName("张三");
Student user3 = new Student();
user3.setStudentId(1002);
user3.setStudentName("李四");
Map<String, Student> userMap = new HashMap<String, Student>();
userMap.put("user1", user1);
userMap.put("user3", user3);
List<Student> userList = new ArrayList<Student>();
userList.add(user1);
userList.add(user3);
Teacher groupBean = new Teacher();
groupBean.setStudent(user1);
groupBean.setStus(userList);
groupBean.setMap((HashMap)userMap);
//groupBean.setUserList(userList);
Gson gsonGroup = new Gson();
String sGroupBean = gsonGroup.toJson(groupBean, new TypeToken<Teacher>() {
}.getType());
System.out.println(sGroupBean);
/*{"stus":[{"studentName":"张三","studentId":1001},{"studentName":"李四","studentId":1002}],"student":{"studentName":"张三","studentId":1001},"map":{"user3":{"studentName":"李四","studentId":1002},"user1":{"studentName":"张三","studentId":1001}},"id":0,"age":0}*/
//9、复杂对象string转对象
Teacher groupBean2 = (Teacher) gson.fromJson(sGroupBean,
new TypeToken<Teacher>() {
}.getType());
System.out.println(groupBean2);
package com.andtools;
import com.google.gson.annotations.Expose;
public class Student {
@Expose
private String studentName;
@Expose
private int studentId;
public Student(){}
public Student(int studentId,String studentName){
this.setStudentId(studentId);
this.setStudentName(studentName);
}
public String toString(){
return this.getStudentId() + ":" + this.getStudentName();
}
public String getStudentName() {
return studentName;
}
public void setStudentName(String studentName) {
this.studentName = studentName;
}
public int getStudentId() {
return studentId;
}
public void setStudentId(int studentId) {
this.studentId = studentId;
}
}
package com.andtools;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.google.gson.annotations.Expose;
public class Teacher {
@Expose
private int id;
@Expose
private String name;
@Expose
private int age;
@Expose
private Student student;
@Expose
private List stus;
@Expose
private HashMap map;
public String toString(){
return this.getId()+":"+this.getName()+":"+this.getAge() +":"+ this.getStudent().toString() + ":" + this.getStus() + ":" + this.getMap();
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Student getStudent() {
return student;
}
public void setStudent(Student student) {
this.student = student;
}
public List getStus() {
return stus;
}
public void setStus(List stus) {
this.stus = stus;
}
public HashMap getMap() {
return map;
}
public void setMap(HashMap map) {
this.map = map;
}
}
附件为网上找的文档。
分享到:
相关推荐
在Android开发中,Gson库是Google提供的一款强大的JSON处理工具,它允许我们将Java对象转换为对应的JSON字符串,同时也能够将JSON数据解析成相应的Java对象。这篇详细的文章将深入探讨如何利用Gson进行高效的JSON...
本篇文章将详细介绍如何在Android Studio环境下使用Google Gson解析Json数据。 首先,我们需要在项目中引入Gson库。打开build.gradle模块文件,并在dependencies块中添加以下依赖: ```groovy dependencies { ...
在“GsonDemo”中,可能包含了示例代码,展示如何在Android的Activity或Fragment中使用Gson进行网络请求后的数据解析,以及如何在保存和读取本地数据时利用Gson。此外,可能还涉及到异常处理,如`...
这个"Android Gson使用实例Demo"旨在帮助开发者理解如何在Android应用中有效地使用Gson库来解析和生成JSON。 Gson的核心功能在于将Java对象转换为对应的JSON字符串,以及将JSON字符串反序列化为Java对象。在Android...
在"Android下用Gson示例"项目中的`GSONAndroidSample-master`可能包含了更具体的示例代码和使用场景,如保存和加载对象到SharedPreferences,或者在网络请求中使用Gson处理JSON数据。通过深入研究这些示例,开发者...
本文将详细介绍如何在Eclipse和Android Studio环境下使用Gson库来解析Json数据。 首先,我们来看Eclipse下的Gson使用示例。在Eclipse中,你需要先引入Gson库。这可以通过在项目构建路径中添加Gson的jar文件完成,...
JSON(JavaScript Object Notation)和Gson是Android开发中常用的数据序列化和反序列化工具,...以上就是关于“Android之json和gson数据解析最完整的代码例子”的详细介绍,希望对您在学习和使用JSON及Gson时有所帮助。
这个"Android Gson解析案例"可能包含了如何在Android应用中使用Gson进行基本和高级的JSON操作的示例代码,帮助开发者更好地理解和掌握这一强大的工具。通过学习和实践这些案例,开发者能够提升自己的Android应用开发...
android google gson json解析
这个"android_Gson"压缩包文件中的GsonDemo可能是一个示例项目,用于演示如何在Android应用中使用Gson库进行数据操作。 首先,`Gson`库的核心类是`Gson`,它提供了两个主要的方法:`toJson()`和`fromJson()`。`to...
本文介绍了如何在使用Gson时避免自动转义特殊字符的方法,通过示例代码展示了具体的实现过程。这对于需要处理含有特殊字符的数据场景非常有用。需要注意的是,在实际应用中还需要根据具体情况来决定是否使用该功能,...
在Android开发中,Gson库是一个非常常用的工具,...参考博文:[链接](https://ujs-lifazhu.iteye.com/blog/1750820)提供了更多关于在Android项目中处理Gson混淆问题的详细步骤和示例,建议详细阅读以获取更深入的理解。
在Android项目中使用Gson,首先需要在`build.gradle`文件的dependencies部分添加Gson库依赖: ```groovy dependencies { implementation 'com.google.code.gson:gson:2.8.6' } ``` 记得同步项目以加载新的依赖项。...
以下是一些基本的使用示例: 1. **创建Java对象映射JSON** 首先,定义一个与JSON数据结构匹配的Java类。例如,如果JSON数据如下: ```json { "name": "John", "age": 30, "city": "New York" } ``` 我们...
在Android开发中,数据交换和存储经常涉及到JSON格式的数据,Google Gson库是一个强大的工具,用于在Java对象和JSON数据之间进行映射。本教程将详细阐述如何在Eclipse环境中使用Gson来解析JSON数据。 首先,我们...
在这个场景中,我们将讨论如何在Android项目的`assets`目录下使用`Gson`来读取JSON文件,以及如何对JSON数据进行格式化操作。 首先,`assets`目录是Android项目中的一个特殊目录,用于存放应用运行时所需的静态资源...
这里提供一个简单的使用Gson与Retrofit结合的例子: ```java // 创建Retrofit实例,指定GsonConverterFactory Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://api.example.com/") ....
在Android开发中,Gson库是一个非常重要的工具,它是由Google提供的用于在Java对象和JSON数据之间进行映射的Java库。这篇“Android学习笔记--Gson笔记”将深入探讨如何利用Gson来处理JSON数据,提升Android应用的...
`GsonDemo`通常是一个包含Gson使用示例的Java源文件,可能包含了各种序列化和反序列化的例子,如自定义类型适应器、处理日期类型、忽略字段等高级功能。通过这个示例文件,我们可以更深入地了解和学习Gson库的用法。...
在IT行业中,JSON(JavaScript Object ...通过熟练掌握Gson的使用,开发者可以更高效地在Java应用中与JSON数据交互。在实际项目中,根据具体需求,还可以结合其他功能如类型适配器、注解等进一步优化JSON解析过程。