`

json转对象 gson 应用

    博客分类:
  • gson
 
阅读更多
使用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;
}
}
};
}

运行结果

 
分享到:
评论

相关推荐

    Gson解析json数据

    这里有一个包含用户列表的JSON对象。对应地,我们需要创建`User`类和`UsersList`类: ```java public class User { private int id; private String name; // 构造方法、getter和setter省略 } public class ...

    java后台与前端交互List转Json(Gson)

    Gson是Google提供的一款强大的Java库,它能将Java对象转换为JSON字符串,反之也能将JSON数据转换回Java对象。本篇文章将深入探讨如何使用Gson库来实现Java后台List类型数据向JSON的转换。 首先,我们需要了解Gson的...

    解析json的gson

    首先,我们来看如何创建一个简单的JSON对象。在Java中,你可以定义一个类来表示你的数据结构,然后使用Gson库将其转换为JSON字符串: ```java public class Person { private String name; private int age; //...

    Json解析Gson解析

    而Gson是Google开发的一个Java库,用于将Java对象转换为JSON格式的字符串,以及将JSON数据转换回等效的Java对象。本篇文章将深入探讨JSON解析以及Gson库的使用方法。 一、JSON解析基础 JSON是一种独立于语言的数据...

    AndroidJSON解析框架GSON

    对于包含嵌套JSON对象的情况,GSON同样支持。只要Java类结构与JSON结构对应,GSON会自动处理嵌套。 **5. 使用GsonBuilder高级功能** - **忽略未知字段:** 在反序列化时,如果JSON包含Java对象中不存在的字段,...

    利用Gson.jar快速将对象类型转换为Json

    总的来说,Gson.jar提供了一个强大而灵活的工具,使得在Java应用中处理JSON数据变得简单。只需几行代码,就可以实现对象与JSON之间的高效转换,极大地提高了开发效率。在实际项目中,结合Maven或Gradle管理依赖,...

    JSON与JAVA对象之间的转换

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,被广泛用于Web应用程序之间传递数据。它以文本形式存储和交换数据,易于人阅读和编写,同时也易于机器解析和生成。JSON格式基于JavaScript的一个...

    安卓 JSON实现对象和数组的相互转换

    Android应用程序经常需要将JSON字符串解析成Java对象,或者将Java对象序列化为JSON字符串。本篇文章将详细介绍如何在Android中利用Gson库实现JSON与对象、数组之间的相互转换。 Gson是Google提供的一个Java库,它...

    gson 2.3.1 json转换利器

    Gson是Google开发的一款强大的Java库,用于在Java对象和JSON数据之间进行映射。它的全称是Google Simple JSON,其版本2.3.1是一个较为稳定且广泛使用的版本,适用于许多Android和Java项目。本篇文章将深入探讨Gson ...

    JSON、GSON解析json

    - JSON对象的所有键必须是字符串,不能使用变量或表达式。 - GSON解析时,Java对象的字段类型需要与JSON数据中的类型匹配,否则会抛出异常。 以上就是关于JSON和GSON在Android开发中的基础知识和实践要点。通过...

    通过Gson解析Json文件

    Gson库是Google提供的一套API,用于在Java对象和JSON字符串之间进行互转。它支持将Java对象转换为JSON字符串,以及将JSON字符串反序列化为Java对象。使用Gson,我们可以轻松地解析JSON文件,将其中的数据映射到Java...

    gson解析器实现json和实体类对象互转源代码

    在本文中,我们将深入探讨Gson解析器的工作原理以及如何利用它来实现JSON和实体类对象之间的互转。 1. **Gson简介** Gson库的核心功能在于提供了一种直观的方式来将Java对象转换为它们对应的JSON表示,反之亦然。...

    谷歌开源json解析库GSON

    1. **类型转换**:GSON可以处理复杂的数据结构,包括嵌套的JSON对象和数组。对于数组和集合,可以指定元素类型,如`List&lt;User&gt;`。 2. **自定义序列化和反序列化**:GSON允许用户通过注解来定制序列化和反序列化的...

    Json与java对象之间相互转换源码

    在实际应用中,我们可能还会遇到复杂的JSON结构,比如嵌套的对象和数组。这时,Java类也需要相应的嵌套结构来匹配。同时,对于JSON中的特殊类型,如日期,我们需要自定义序列化和反序列化的策略。 此外,Echarts是...

    JSON演示(Gson及Jackson)

    在这个"JSON演示(Gson及Jackson)"中,我们将探讨两种流行的Java库——Gson和Jackson,它们都用于在Java对象和JSON字符串之间进行序列化和反序列化。 ### Gson库 Gson是Google提供的一个开源库,它能够将Java对象...

    json转对象(java 多级嵌套)

    例如,如果`InnerObject`还包含另一个嵌套的JSON对象,只需在Java类中添加相应的字段并定义相应的getter和setter即可。`ObjectMapper`会根据JSON结构解析并填充Java对象。 5. **反向操作:Java对象转JSON** 除了将...

    json包、gson包以及相应的源码

    Gson包中的`gson-2.3.1.jar`是Gson库的二进制版本,可以直接在项目中引用以实现Java对象与JSON字符串的互转。Gson的强大之处在于它能够自动映射Java对象到JSON,反之亦然,极大地简化了数据交换的工作。`gson-2.3.1-...

    Gson和Jsonlib需要的jar包

    Gson是Google提供的一款强大的JSON库,它可以直接将Java对象转换为JSON字符串,也可以将JSON数据反序列化为Java对象。Gson的优点在于其简洁的API和高效的性能。 #### Gson的基本使用 1. **序列化**:将Java对象...

    gson 2.7 用于转换Java对象和Json对象

    Gson库是由Google提供的一个Java库,其主要功能是帮助开发者在Java对象和JSON数据之间进行相互转换。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,因其易读性、易写性和易于解析而被广泛应用于...

    json解析 gson fastjson

    它提供了一个JSON对象模型,包括JSONObject、JSONArray、JSONString等,可以进行基本的JSON操作。然而,相比Gson和Fastjson,它的功能较为有限,不支持直接将Java对象与JSON相互转换。 总结来说,这三个JSON解析库...

Global site tag (gtag.js) - Google Analytics