日期:2014-05-16 浏览次数:20359 次
使用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\":