利用GSON解析JSON數據

jopen 10年前發布 | 34K 次閱讀 Android開發 移動開發 Gson

main.xml如下:

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
        xmlns:tools="http://schemas.android.com/tools"  
        android:layout_width="match_parent"  
        android:layout_height="match_parent"  
        tools:context=".MainActivity" >  

        <TextView  
            android:layout_width="wrap_content"  
            android:layout_height="wrap_content"  
            android:layout_centerHorizontal="true"  
            android:layout_marginTop="20dip"  
            android:textSize="22sp"  
            android:text="GSON測試" />  


          <Button   
            android:id="@+id/button"  
            android:layout_width="fill_parent"  
            android:layout_height="wrap_content"  
            android:layout_marginTop="180dip"  
            android:text="將復雜JSON轉換為JavaBean格式"  
            />  

    </RelativeLayout>  


TestJavaBean如下:

    package com.rbt;  
    public class TestJavaBean {  
        public String COUPON_NO;  
        public String COUPON_NM;  
        public String COUPON_IMG;  
        public String COUPON_CP;  
        public String COUPON_EXPIRE_DATE;  
        public String COUPON_EXPIRE_START_DM;  
        public String COUPON_EXPIRE_END_DM;  
        public String COUPON_grant_FLAG;  
        public TestJavaBean() {  
            super();  
        }  
        public String getCOUPON_NO() {  
            return COUPON_NO;  
        }  
        public void setCOUPON_NO(String cOUPON_NO) {  
            COUPON_NO = cOUPON_NO;  
        }  
        public String getCOUPON_NM() {  
            return COUPON_NM;  
        }  
        public void setCOUPON_NM(String cOUPON_NM) {  
            COUPON_NM = cOUPON_NM;  
        }  
        public String getCOUPON_IMG() {  
            return COUPON_IMG;  
        }  
        public void setCOUPON_IMG(String cOUPON_IMG) {  
            COUPON_IMG = cOUPON_IMG;  
        }  
        public String getCOUPON_CP() {  
            return COUPON_CP;  
        }  
        public void setCOUPON_CP(String cOUPON_CP) {  
            COUPON_CP = cOUPON_CP;  
        }  
        public String getCOUPON_EXPIRE_DATE() {  
            return COUPON_EXPIRE_DATE;  
        }  
        public void setCOUPON_EXPIRE_DATE(String cOUPON_EXPIRE_DATE) {  
            COUPON_EXPIRE_DATE = cOUPON_EXPIRE_DATE;  
        }  
        public String getCOUPON_EXPIRE_START_DM() {  
            return COUPON_EXPIRE_START_DM;  
        }  
        public void setCOUPON_EXPIRE_START_DM(String cOUPON_EXPIRE_START_DM) {  
            COUPON_EXPIRE_START_DM = cOUPON_EXPIRE_START_DM;  
        }  
        public String getCOUPON_EXPIRE_END_DM() {  
            return COUPON_EXPIRE_END_DM;  
        }  
        public void setCOUPON_EXPIRE_END_DM(String cOUPON_EXPIRE_END_DM) {  
            COUPON_EXPIRE_END_DM = cOUPON_EXPIRE_END_DM;  
        }  
        public String getCOUPON_grant_FLAG() {  
            return COUPON_grant_FLAG;  
        }  
        public void setCOUPON_grant_FLAG(String cOUPON_grant_FLAG) {  
            COUPON_grant_FLAG = cOUPON_grant_FLAG;  
        }  
        @Override  
        public String toString() {  
            return "TestJavaBean [COUPON_NO=" + COUPON_NO + ", COUPON_NM="  
                    + COUPON_NM + ", COUPON_IMG=" + COUPON_IMG + ", COUPON_CP="  
                    + COUPON_CP + ", COUPON_EXPIRE_DATE=" + COUPON_EXPIRE_DATE  
                    + ", COUPON_EXPIRE_START_DM=" + COUPON_EXPIRE_START_DM  
                    + ", COUPON_EXPIRE_END_DM=" + COUPON_EXPIRE_END_DM  
                    + ", COUPON_grant_FLAG=" + COUPON_grant_FLAG + "]";  
        }  


    }  


MainActivity如下:

package com.rbt;  
import java.io.BufferedReader;  
import java.io.InputStream;  
import java.io.InputStreamReader;  
import java.lang.reflect.Type;  
import java.util.ArrayList;  
import java.util.HashMap;  
import java.util.List;  
import java.util.Map;  
import org.apache.http.HttpEntity;  
import org.apache.http.HttpResponse;  
import org.apache.http.client.entity.UrlEncodedFormEntity;  
import org.apache.http.client.methods.HttpPost;  
import org.apache.http.impl.client.DefaultHttpClient;  
import org.apache.http.message.BasicNameValuePair;  
import org.apache.http.params.HttpConnectionParams;  
import org.apache.http.protocol.HTTP;  
import org.json.JSONArray;  
import org.json.JSONObject;  
import android.app.Activity;  
import android.os.Bundle;  
import android.view.View;  
import android.view.View.OnClickListener;  
import android.widget.Button;  
import com.google.gson.Gson;  
import com.google.gson.reflect.TypeToken;  
/** 
 * Demo描述: 
 * 利用GSON解析JSON數據--將json數據封裝到ArrayList<Object>中 
 * 注意: 
 * JavaBean中的每個變量名于每個JSON數據的字段嚴格對應. 
 * 比如大小寫 
 * 
 */  
public class MainActivity extends Activity {  
   private Gson mGson;  
   private Button mButton;  
   private String mJSONData;  
   private ArrayList<TestJavaBean> mTestJavaBeansArrayList;  
   private String mUrl="your url";  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main);  
        init();  
    }  
    private void init(){  
        mButton=(Button) findViewById(R.id.button);  
        mButton.setOnClickListener(new ClickListenerImpl());  
    }  

    private class ClickListenerImpl implements OnClickListener {  
        @Override  
        public void onClick(View v) {  
            switch (v.getId()) {  
            case R.id.button:  
                try {  
                    mJSONData = getJSONData();  
                    mGson = new Gson();  
                    JSONObject jsonObject = new JSONObject(mJSONData);  
                    JSONArray jsonArray = jsonObject.getJSONArray("COUPON_LIST");  
                    System.out.println("需要轉換的JSONArray=" + jsonArray.toString());  
                    Type listType = new TypeToken<ArrayList<TestJavaBean>>() {}.getType();  
                    mTestJavaBeansArrayList = mGson.fromJson(jsonArray.toString(), listType);  
                    System.out.println("linkedList.size()="+ mTestJavaBeansArrayList.size());  
                    for (int i = 0; i < mTestJavaBeansArrayList.size(); i++) {  
                        TestJavaBean testJavaBean = mTestJavaBeansArrayList.get(i);  
                        System.out.println("現在是第" + i + "個數據:" + " "+ testJavaBean.toString());  
                    }  

                } catch (Exception e) {  

                }  
                break;  
            default:  
                break;  
            }  
        }  

    }  

    public String getJSONData() {  
        HttpEntity httpEntity = null;  
        HttpResponse response = null;  
        try {  
            Map<String, String> paramsHashMap = new HashMap<String, String>();  
            paramsHashMap.put("IF_NO", "IF0002");  
            paramsHashMap.put("UID", "12345");  
            HttpPost httpPost = new HttpPost(mUrl);  
            DefaultHttpClient httpClient = getHttpClient();  
            List<BasicNameValuePair> postData = new ArrayList<BasicNameValuePair>();  
            for (Map.Entry<String, String> entry : paramsHashMap.entrySet()) {  
                postData.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));  
            }  
            UrlEncodedFormEntity entity = new UrlEncodedFormEntity(postData,HTTP.UTF_8);  
            httpPost.setEntity(entity);  
            response = httpClient.execute(httpPost);  
            httpEntity = response.getEntity();  

            InputStream is = httpEntity.getContent();  
            StringBuffer sb = new StringBuffer();  
            BufferedReader br = new BufferedReader(new InputStreamReader(is));  
            String line = "";  
            while ((line = br.readLine()) != null) {  
                sb.append(line);  
            }  
            return sb.toString();  
        } catch (Exception e) {  

        }  
        return null;  

    }  

    private DefaultHttpClient getHttpClient() {  
        DefaultHttpClient httpClient = new DefaultHttpClient();  
        HttpConnectionParams.setConnectionTimeout(httpClient.getParams(), 8000);  
        HttpConnectionParams.setSoTimeout(httpClient.getParams(), 10000);  
        HttpConnectionParams.setTcpNoDelay(httpClient.getParams(), true);  
        return httpClient;  
    }  
}  
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!