GSON实例详解
来源:互联网 发布:淘宝如何拉免费流量 编辑:程序博客网 时间:2024/06/06 02:12
GSON是Google提供的用来在Java对象和JSON数据之间进行映射的Java类库,GSON可以很容易的将一个java对象转换成json文本,也可以很容易的将json文本转换为java对象,两种转换方式分别对应的方法是:toJson()和fromJson()。
一:toJson()详解(将一个java对象转换成json文本)
1,生成生成数组类型的json文本,效果图:
(点击按钮 toJsonArray)
代码:
首先新建一个类:GsonInfo;
public class GsonInfo { private String name; private int age; private String gender; 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 String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } @Override public String toString() { return "GsonInfo{" + "name='" + name + '\'' + ", age=" + age + ", gender='" + gender + '\'' + '}'; } public GsonInfo(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; }}
layout布局:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <Button android:id="@+id/btn_tojson" android:layout_width="1dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="toJsonArray"/> <Button android:id="@+id/btn_fromjson" android:layout_width="1dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="fromJsonArray"/> </LinearLayout> <TextView android:id="@+id/branch1" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/branch2" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <Button android:id="@+id/btn_tojson2" android:layout_width="1dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="toJsonMix"/> <Button android:id="@+id/btn_fromjson2" android:layout_width="1dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="fromJsonMix"/> </LinearLayout> <TextView android:id="@+id/branch3" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/branch4" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/branch5" android:layout_width="wrap_content" android:layout_height="wrap_content" /></LinearLayout>
MainActivity代码:
import android.annotation.TargetApi;import android.app.Activity;import android.app.Notification;import android.app.NotificationManager;import android.app.PendingIntent;import android.content.Context;import android.content.Intent;import android.os.Build;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.TextView;import com.google.gson.Gson;import org.json.JSONObject;import java.util.ArrayList;import java.util.LinkedList;import java.util.List;public class MainActivity extends Activity implements View.OnClickListener{ private TextView tv_branch1; private TextView tv_branch2; private TextView tv_branch3; private TextView tv_branch4; private TextView tv_branch5; private Gson gson = new Gson();//初始化Gson @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViewById(R.id.btn_tojson).setOnClickListener(this); findViewById(R.id.btn_tojson2).setOnClickListener(this); tv_branch1 = (TextView) findViewById(R.id.branch1); tv_branch2 = (TextView) findViewById(R.id.branch2); tv_branch3 = (TextView) findViewById(R.id.branch3); tv_branch4 = (TextView) findViewById(R.id.branch4); tv_branch5 = (TextView) findViewById(R.id.branch5); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.btn_tojson: toJson();//生成数组类型的json文本 break; } } /** * 格式类似于: * [{ "name": "小琛", "gender": "男", "age": "21" }, { "name": "中琛", "gender": "未知", "age": "22" }, { "name": "大琛", "gender": "男", "age": "23" }] */ private StringtoJson(){ List<GsonInfo> list = new ArrayList<GsonInfo>(); GsonInfo info1 = new GsonInfo("小琛",21,"男"); list.add(info1); GsonInfo info2 = new GsonInfo("中琛",22,"未知"); list.add(info2); GsonInfo info3 = new GsonInfo("大琛",23,"男"); list.add(info3); tv_branch1.setText(gson.toJson(list)); return gson.toJson(list); }}
2,一个对象嵌套一个对象的json文本,效果图:
(点击按钮 toJsonMix)
代码:
除了 GsonInfo类,还要新建一个类:GsonInfo2:
public class GsonInfo2 { private String boyFriend; private String grilFriend; public GsonInfo2() { super(); } public GsonInfo2(String boyFriend, String grilFriend) { super(); this.boyFriend = boyFriend; this.grilFriend = grilFriend; } public String getBoyFriend() { return boyFriend; } public void setBoyFriend(String boyFriend) { this.boyFriend = boyFriend; } public String getGrilFriend() { return grilFriend; } public void setGrilFriend(String grilFriend) { this.grilFriend = grilFriend; } @Override public String toString() { return "GsonInfo2{" + "boyFriend='" + boyFriend + '\'' + ", grilFriend='" + grilFriend + '\'' + '}'; }}
布局不用修改,MainActivity:
import android.annotation.TargetApi;import android.app.Activity;import android.app.Notification;import android.app.NotificationManager;import android.app.PendingIntent;import android.content.Context;import android.content.Intent;import android.os.Build;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.TextView;import com.google.gson.Gson;import org.json.JSONObject;import java.util.ArrayList;import java.util.LinkedList;import java.util.List;public class MainActivity extends Activity implements View.OnClickListener{ private TextView tv_branch1; private TextView tv_branch2; private TextView tv_branch3; private TextView tv_branch4; private TextView tv_branch5; private Gson gson = new Gson();//初始化Gson @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViewById(R.id.btn_tojson).setOnClickListener(this); findViewById(R.id.btn_fromjson).setOnClickListener(this); findViewById(R.id.btn_tojson2).setOnClickListener(this); findViewById(R.id.btn_fromjson2).setOnClickListener(this); tv_branch1 = (TextView) findViewById(R.id.branch1); tv_branch2 = (TextView) findViewById(R.id.branch2); tv_branch3 = (TextView) findViewById(R.id.branch3); tv_branch4 = (TextView) findViewById(R.id.branch4); tv_branch5 = (TextView) findViewById(R.id.branch5); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.btn_tojson2: toJson2();//一个对象嵌套一个对象的json文本 break; } } /** * 格式类似于: * { "friend": { "grilFriend": "小花", "bogFriend": "小美" }, "name": "小明", "gender": "男", "age": 11 } */ private void toJson2(){ GsonInfo info = new GsonInfo("小明",11,"男"); GsonInfo2 info2 = new GsonInfo2("小美","小花"); String infoStr = gson.toJson(info); String info2Str = gson.toJson(info2); tv_branch3.setText(infoStr); tv_branch4.setText(info2Str); JSONObject object = null; try { JSONObject infoObject = new JSONObject(info2Str); object = new JSONObject(infoStr); object.put("friend",infoObject);//键值对 }catch (Exception e){ e.printStackTrace(); } tv_branch5.setText(object.toString()); }}
二:fromJson()详解(将json文本转换为java对象)
private void fromJson() { //获得toJson()中的JSON的字符串 String fromData = toJson(); Type type = new TypeToken<GsonInfo>() { }.getType(); GsonInfo gsonInfo = new GsonInfo(); gsonInfo = gson.fromJson(fromData, type); tv_branch2.setText(gsonInfo.toString()); }
0 0
- GSON实例详解
- Gson详解
- Gson详解
- Gson详解
- GSON详解
- GSON 详解
- Gson使用实例
- Gson解析Json实例
- Gson解析 json 实例
- Gson简单实例
- 简单gson实例
- Gson解析实例
- JsonObject和Gson详解
- 使用Gson详解
- gson使用详解
- Android-Gson详解
- Gson用法详解
- Gson解析(详解)
- iframe自适应大小
- 人生感悟3
- JavaScript Array(数组)
- Android Studio out of memory
- 安卓驱动开发要干的那些事
- GSON实例详解
- View的事件分发机制一:事件分发概述
- 使用OpenCV探测来至运动的结构
- uva11383(KM算法)
- leetcode之Add Digits
- 用小猫统计制作运动员评价管理系统:导入下拉列表内容(固定值列表)
- Win32实现迷宫
- PAT-B 1002. 写出这个数
- Android 判断当前系统语言