JSON解析

 

JSON:javaScript Object Notation

JSON數據是一系列鍵值對的集合

 

JSON Vs XML

1.JSON和XML的數據可讀性基本相同

2.JSON和XML同樣擁有豐富的解析手段

3.JSON相對於XML來講,數據的體積小

4.JSON與JavaScript的交互更加方便

 

5.JSON對數據的描述性比XML較差

 

 

 

 

Step:

Donwload google-gson-1.7.1-release.zip

uncompress the file

new folder libs for the project

copy gson- 1.7.1.java to libs

right key:Build path --> Add to build path

 

 

 

 

==================== <一> 解析一個JSON對象數組:===============================

 

JsonUtils.java

 

view plain

package lxy.litsoft; 

 

import java.io.IOException;  

import java.io.StringReader; 

import android.util.Log; 

import com.google.gson.stream.JsonReader; 

 

public class JsonUtils { 

 

    public void parseJson(String jsonDate){ 

         

        //如果需要解析JSON數據,首先要生成一個JsonReader對象 

        JsonReader reader = new JsonReader(new StringReader(jsonDate)); 

        try { 

            //開始解析一個數組 

            reader.beginArray(); 

            while(reader.hasNext()){    //判斷數組裏面有沒有下一個JSON對象 

                reader.beginObject();   //開始解析對象 

                while(reader.hasNext()){    //判斷是否有下一個鍵值對 

                    String tagName = reader.nextName(); 

                    if(tagName.equals("name")){ //如果鍵爲"name" 

                        Log.d("test", "name ---->"+reader.nextString()); 

                    } else if(tagName.equals("age")){   //如果鍵爲"age" 

                        Log.d("test", "age ---->"+reader.nextInt()); 

                    } 

                } 

                reader.endObject(); //解析對象結束 

            } 

            reader.endArray();  //解析數組結束 

        } catch (IOException e) { 

            e.printStackTrace(); 

        } 

    } 

 

 

AppMain.java

view plain

package lxy.litsoft; 

 

import android.app.Activity; 

import android.os.Bundle; 

import android.util.Log; 

import android.view.View; 

import android.view.View.OnClickListener; 

import android.widget.Button; 

 

public class AppMain extends Activity { 

     

    private Button button; 

    //JSON對象數組 

    private String jsonDate = "[{\"name\":\"liuliu\",\"age\":30},{\"name\":\"huohuo\",\"age\":20}]"; 

    public void onCreate(Bundle savedInstanceState) { 

        super.onCreate(savedInstanceState); 

        setContentView(R.layout.main); 

         

        button = (Button)findViewById(R.id.button); 

        button.setOnClickListener(new ButtonListener()); 

         

    } 

     

    class ButtonListener implements OnClickListener{ 

        public void onClick(View v) { 

            Log.d("test", "TEST"); 

            JsonUtils jsonUtils = new JsonUtils(); 

            jsonUtils.parseJson(jsonDate); 

        } 

    } 

 

==========================  <一>  END:========================================

 

==================== <二>  解析一個JSON對象到普通對象:===========================

 

JsonUtiles.java

 

view plain

package lxy.litsoft; 

 

import android.util.Log; 

import com.google.gson.Gson; 

 

public class JsonUtils { 

 

    public void parseUserFromJSON(String jsonDate){ 

        Gson gson = new Gson(); 

        //把JSON對象轉換成類的對象 

        User user = gson.fromJson(jsonDate, User.class); 

        Log.d("test", "Name ----> "+user.getName()); 

        Log.d("test", "Age ----> "+user.getAge()); 

    } 

User.java

view plain

package lxy.litsoft; 

 

public class User { 

    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; 

    } 

    private String name; 

    private int age; 

     

 

AppMain.java

view plain

package lxy.litsoft; 

 

import android.app.Activity; 

import android.os.Bundle; 

import android.util.Log; 

import android.view.View; 

import android.view.View.OnClickListener; 

import android.widget.Button; 

 

public class AppMain extends Activity { 

     

    private Button button; 

    private String jsonDate = "{\"name\":\"liuliu\",\"age\":30}"; 

    public void onCreate(Bundle savedInstanceState) { 

        super.onCreate(savedInstanceState); 

        setContentView(R.layout.main); 

         

        button = (Button)findViewById(R.id.button); 

        button.setOnClickListener(new ButtonListener()); 

         

    } 

     

    class ButtonListener implements OnClickListener{ 

        public void onClick(View v) { 

            Log.d("test", "TEST"); 

            JsonUtils jsonUtils = new JsonUtils(); 

            jsonUtils.parseUserFromJSON(jsonDate); 

        } 

    } 

接上頁

 

==========================  <二>  END:========================================

 

==================== <三>  解析一個JSON對象數組到普通對象:=======================

 

JsonUtils.java

 

view plain

package lxy.litsoft; 

 

import java.lang.reflect.Type; 

import java.util.Iterator; 

import java.util.LinkedList; 

 

import android.util.Log; 

import com.google.gson.Gson; 

import com.google.gson.reflect.TypeToken; 

 

public class JsonUtils { 

 

    public void parseUserFromJSON(String jsonDate){ 

        Type listType = new TypeToken<LinkedList<User>>(){}.getType(); 

        Gson gson = new Gson(); 

        //把JSON對象轉換成類的對象 

        LinkedList<User> users = gson.fromJson(jsonDate, listType); 

        for(Iterator iterator = users.iterator(); iterator.hasNext();){ 

            User user = (User)iterator.next(); 

            Log.d("test", "Name ----> "+user.getName()); 

            Log.d("test", "Age ----> "+user.getAge()); 

        } 

         

    } 

User.java

view plain

package lxy.litsoft; 

 

public class User { 

    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; 

    } 

    private String name; 

    private int age; 

     

 

AppMain.java

view plain

package lxy.litsoft; 

 

import android.app.Activity; 

import android.os.Bundle; 

import android.util.Log; 

import android.view.View; 

import android.view.View.OnClickListener; 

import android.widget.Button; 

 

public class AppMain extends Activity { 

     

    private Button button; 

    private String jsonDate = "[{\"name\":\"liuliu\",\"age\":30},{\"name\":\"huohuo\",\"age\":20}]"; 

    public void onCreate(Bundle savedInstanceState) { 

        super.onCreate(savedInstanceState); 

        setContentView(R.layout.main); 

         

        button = (Button)findViewById(R.id.button); 

        button.setOnClickListener(new ButtonListener()); 

         

    } 

     

    class ButtonListener implements OnClickListener{ 

        public void onClick(View v) { 

            Log.d("test", "TEST"); 

            JsonUtils jsonUtils = new JsonUtils(); 

            jsonUtils.parseUserFromJSON(jsonDate); 

        } 

    } 

==========================  <三>  END:========================================

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章