使用Gson将Java对象转换为Json
Gson是Google的一个开源项目,可以将Java对象转换成JSON,也可能将JSON转换成Java对象。
Gson里最重要的对象有2个Gson 和GsonBuilder。
Gson有2个最基本的方法
1) toJson() – 转换java 对象到JSON
2) fromJson() – 转换JSON到java对象
注意使用Gson时记得添加第三方类库gson-1.6.jar
main.xml布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<Button android:id="@+id/btn01"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:text="开始解析01"/>
<Button android:id="@+id/btn02"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:text="开始解析02"/>
<Button android:id="@+id/btn03"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:text="开始解析03"/>
<Button android:id="@+id/btn04"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:text="JavaToJson"/>
<Button android:id="@+id/btn05"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:text="把对象的属性转换成json的名字"/>
</LinearLayout>
实体类User
package com.ljq.json;
import com.google.gson.annotations.SerializedName;
public class User {
//将java对象的属性转换成指定的json名字
@SerializedName("username")
private String name;
private int age;
public User() {
super();
}
public User(String name, int age) {
super();
this.name = name;
this.age = age;
}
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;
}
}
工具类JsonUtils
package com.ljq.json;
import java.io.StringReader;
import java.lang.reflect.Type;
import java.util.Iterator;
import java.util.LinkedList;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.google.gson.stream.JsonReader;
public class JsonUtils {
public void parseJson01(String jsonData){
try {
//解析json对象首先要生产一个JsonReader对象
JsonReader reader=new JsonReader(new StringReader(jsonData));
reader.beginArray();
while(reader.hasNext()){
reader.beginObject();
while(reader.hasNext()){
String tagName=reader.nextName();
if("name".equals(tagName)){
System.out.println("name--->"+reader.nextString());
}else if("age".equals(tagName)){
System.out.println("age--->"+reader.nextInt());
}
}
reader.endObject();
}
reader.endArray();
} catch (Exception e) {
e.printStackTrace();
}
}
public void parseJson02(String jsonData){
Gson gson=new Gson();
User user=gson.fromJson(jsonData, User.class);
System.out.println("name--->" + user.getName());
System.out.println("age---->" + user.getAge());
}
public void parseJson03(String jsonData){
Type listType = new TypeToken<LinkedList<User>>(){}.getType();
Gson gson=new Gson();
LinkedList<User> users=gson.fromJson(jsonData, listType);
for(User user:users){
System.out.println("name--->" + user.getName());
System.out.println("age---->" + user.getAge());
}
System.out.println("==================");
for (Iterator iterator = users.iterator(); iterator.hasNext();) {
User user = (User) iterator.next();
System.out.println("name--->" + user.getName());
System.out.println("age---->" + user.getAge());
}
}
}
JsonActivity
package com.ljq.json;
import com.google.gson.FieldNamingPolicy;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class JsonActivity extends Activity {
private Button btn01=null;
private Button btn02=null;
private Button btn03=null;
private Button btn04=null;
private Button btn05=null;
private String jsonData01 = "[{\"name\":\"Michael\",\"age\":20},{\"name\":\"Mike\",\"age\":21}]";
private String jsonData02 = "{\"name\":\"Michael\",\"age\":20}";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btn01=(Button)findViewById(R.id.btn01);
btn02=(Button)findViewById(R.id.btn02);
btn03=(Button)findViewById(R.id.btn03);
btn04=(Button)findViewById(R.id.btn04);
btn05=(Button)findViewById(R.id.btn05);
btn01.setOnClickListener(listener);
btn02.setOnClickListener(listener);
btn03.setOnClickListener(listener);
btn04.setOnClickListener(listener);
btn05.setOnClickListener(listener);
}
View.OnClickListener listener=new View.OnClickListener(){
public void onClick(View v) {
JsonUtils jsonUtils=new JsonUtils();
switch (v.getId()) {
case R.id.btn01:
jsonUtils.parseJson01(jsonData01);
break;
case R.id.btn02:
jsonUtils.parseJson02(jsonData02);
break;
case R.id.btn03:
jsonUtils.parseJson03(jsonData01);
break;
case R.id.btn04:
//把java对象转换成json
User user01=new User("linjiqin", 24);
Gson gson=new Gson();
String obj=gson.toJson(user01);
System.out.println(obj);//输出{"name":"linjiqin", "age":24}
break;
case R.id.btn05:
//将java对象的属性转换成指定的json名字
User user02=new User("lintepeng", 22);
Gson gson2=new GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE).create();
String obj2=gson2.toJson(user02);
System.out.println(obj2);//输出{"username":"lintepeng","Age":22}
break;
}
}
};
}
运行结果
分享到:
相关推荐
这里有一个包含用户列表的JSON对象。对应地,我们需要创建`User`类和`UsersList`类: ```java public class User { private int id; private String name; // 构造方法、getter和setter省略 } public class ...
Gson是Google提供的一款强大的Java库,它能将Java对象转换为JSON字符串,反之也能将JSON数据转换回Java对象。本篇文章将深入探讨如何使用Gson库来实现Java后台List类型数据向JSON的转换。 首先,我们需要了解Gson的...
首先,我们来看如何创建一个简单的JSON对象。在Java中,你可以定义一个类来表示你的数据结构,然后使用Gson库将其转换为JSON字符串: ```java public class Person { private String name; private int age; //...
而Gson是Google开发的一个Java库,用于将Java对象转换为JSON格式的字符串,以及将JSON数据转换回等效的Java对象。本篇文章将深入探讨JSON解析以及Gson库的使用方法。 一、JSON解析基础 JSON是一种独立于语言的数据...
对于包含嵌套JSON对象的情况,GSON同样支持。只要Java类结构与JSON结构对应,GSON会自动处理嵌套。 **5. 使用GsonBuilder高级功能** - **忽略未知字段:** 在反序列化时,如果JSON包含Java对象中不存在的字段,...
总的来说,Gson.jar提供了一个强大而灵活的工具,使得在Java应用中处理JSON数据变得简单。只需几行代码,就可以实现对象与JSON之间的高效转换,极大地提高了开发效率。在实际项目中,结合Maven或Gradle管理依赖,...
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,被广泛用于Web应用程序之间传递数据。它以文本形式存储和交换数据,易于人阅读和编写,同时也易于机器解析和生成。JSON格式基于JavaScript的一个...
Android应用程序经常需要将JSON字符串解析成Java对象,或者将Java对象序列化为JSON字符串。本篇文章将详细介绍如何在Android中利用Gson库实现JSON与对象、数组之间的相互转换。 Gson是Google提供的一个Java库,它...
Gson是Google开发的一款强大的Java库,用于在Java对象和JSON数据之间进行映射。它的全称是Google Simple JSON,其版本2.3.1是一个较为稳定且广泛使用的版本,适用于许多Android和Java项目。本篇文章将深入探讨Gson ...
- JSON对象的所有键必须是字符串,不能使用变量或表达式。 - GSON解析时,Java对象的字段类型需要与JSON数据中的类型匹配,否则会抛出异常。 以上就是关于JSON和GSON在Android开发中的基础知识和实践要点。通过...
Gson库是Google提供的一套API,用于在Java对象和JSON字符串之间进行互转。它支持将Java对象转换为JSON字符串,以及将JSON字符串反序列化为Java对象。使用Gson,我们可以轻松地解析JSON文件,将其中的数据映射到Java...
在本文中,我们将深入探讨Gson解析器的工作原理以及如何利用它来实现JSON和实体类对象之间的互转。 1. **Gson简介** Gson库的核心功能在于提供了一种直观的方式来将Java对象转换为它们对应的JSON表示,反之亦然。...
1. **类型转换**:GSON可以处理复杂的数据结构,包括嵌套的JSON对象和数组。对于数组和集合,可以指定元素类型,如`List<User>`。 2. **自定义序列化和反序列化**:GSON允许用户通过注解来定制序列化和反序列化的...
在实际应用中,我们可能还会遇到复杂的JSON结构,比如嵌套的对象和数组。这时,Java类也需要相应的嵌套结构来匹配。同时,对于JSON中的特殊类型,如日期,我们需要自定义序列化和反序列化的策略。 此外,Echarts是...
在这个"JSON演示(Gson及Jackson)"中,我们将探讨两种流行的Java库——Gson和Jackson,它们都用于在Java对象和JSON字符串之间进行序列化和反序列化。 ### Gson库 Gson是Google提供的一个开源库,它能够将Java对象...
例如,如果`InnerObject`还包含另一个嵌套的JSON对象,只需在Java类中添加相应的字段并定义相应的getter和setter即可。`ObjectMapper`会根据JSON结构解析并填充Java对象。 5. **反向操作:Java对象转JSON** 除了将...
Gson包中的`gson-2.3.1.jar`是Gson库的二进制版本,可以直接在项目中引用以实现Java对象与JSON字符串的互转。Gson的强大之处在于它能够自动映射Java对象到JSON,反之亦然,极大地简化了数据交换的工作。`gson-2.3.1-...
Gson是Google提供的一款强大的JSON库,它可以直接将Java对象转换为JSON字符串,也可以将JSON数据反序列化为Java对象。Gson的优点在于其简洁的API和高效的性能。 #### Gson的基本使用 1. **序列化**:将Java对象...
Gson库是由Google提供的一个Java库,其主要功能是帮助开发者在Java对象和JSON数据之间进行相互转换。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,因其易读性、易写性和易于解析而被广泛应用于...
它提供了一个JSON对象模型,包括JSONObject、JSONArray、JSONString等,可以进行基本的JSON操作。然而,相比Gson和Fastjson,它的功能较为有限,不支持直接将Java对象与JSON相互转换。 总结来说,这三个JSON解析库...