天天看點

【轉】使用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
     ;
            }
        }
    };
}