Chinaunix首页 | 论坛 | 博客
  • 博客访问: 207929
  • 博文数量: 102
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1015
  • 用 户 组: 普通用户
  • 注册时间: 2013-06-05 16:45
文章存档

2014年(73)

2013年(29)

我的朋友

分类: Android平台

2014-04-22 11:40:48

02_12_JSON数据解析


对json字符串直接解析

点击(此处)折叠或打开

  1. //MainActivity.java
  2. package com.lwb.json01;
  3. import android.app.Activity;
  4. import android.os.Bundle;
  5. import android.view.View;
  6. import android.view.View.OnClickListener;
  7. import android.widget.Button;
  8. public class MainActivity extends Activity {
  9.     private String jsonData = "[{\"name\":\"liweibing\",\"age\":24},{\"name\":\"wangwu\",\"age\":20}]";
  10.     private Button button;
  11.     
  12.     @Override
  13.     protected void onCreate(Bundle savedInstanceState) {
  14.         super.onCreate(savedInstanceState);
  15.         setContentView(R.layout.main);
  16.         button = (Button)findViewById(R.id.buttonId);
  17.         button.setOnClickListener(new ButtonListener());
  18.     }

  19.     /*1、创建一个JsonUtils对象
  20.      *2、把要解析的字符串jsonData调用JsonUtils对象的parseJson方法进行解析
  21.      * */    
  22.     public class ButtonListener implements OnClickListener{
  23.         @Override
  24.         public void onClick(View v) {
  25.             JsonUtils jsonUtils = new JsonUtils();
  26.             jsonUtils.parseJson(jsonData);            
  27.         }
  28.     }
  29. }

  30. //jsonUtils.java
  31. package com.lwb.json01;
  32. import java.io.StringReader;
  33. import com.google.gson.stream.JsonReader;

  34. /* 在中能了解json的用法 ;
  35.  * 在中下载
  36.  * google-gson-2.2.4-release.zip 解压到google-gson-2.2.4-release
  37.  * 并把gson-2.2.4.jar 拷贝到工程的新建lib目录下
  38.  * 点击gson-2.2.4.jar 右击选 Bluid Path -> add to Bluid Path 添加库路径
  39.  * */

  40. /*1、定义一个JsonUtils类,并实现parseJson(String jsonData)方法
  41.  *2、parseJson具体实现:
  42.  *        1、定义一个JsonReader对象:reader = new JsonReader(new StringReader(jasonData)),
  43.  *            里边传递的是StringReader()对象,而StringReader对象里边传递的是字符串对象jasonData
  44.  *        2、reader.beginArray() 应该表示的是一个数组
  45.  *        3、reader.hasNext()
  46.  *        4、 reader.beginObject() 表示的是一个对象的开始
  47.  *        5、 解析键值对:reader.hasNext()->得到tagName = reader.nextName 并进行比较 得到 名字 reader.nextString
  48.  *        6、 reader.endObject() 表解析对象结束
  49.  *        7、reader.endArray()   表解析数据结束
  50.  **/

  51. public class JsonUtils {
  52.     public void parseJson(String jsonData){
  53.         try{
  54.             JsonReader reader = new JsonReader(new StringReader(jsonData));
  55.             reader.beginArray();
  56.             while(reader.hasNext()){
  57.                 reader.beginObject();
  58.                 while(reader.hasNext()){
  59.                     String tagName = reader.nextName();        
  60.                     if(tagName.equals("name")){
  61.                         System.out.print("name--->" + reader.nextString());    
  62.                     }
  63.                     else if(tagName.equals("age")){
  64.                         System.out.println("age---->" + reader.nextInt());                    
  65.                     }
  66.                 }//end - while1
  67.                 reader.endObject();    
  68.             }//end - while2    
  69.             reader.endArray();
  70.         }// end - try
  71.         catch(Exception e){        
  72.             e.printStackTrace();
  73.         }
  74.     }
  75. }
以对象的形式对json进行解析(只能解析一个对象

点击(此处)折叠或打开

  1. //MainActivity.java
  2. package com.lwb.json02;
  3. import android.app.Activity;
  4. import android.os.Bundle;
  5. import android.view.View;
  6. import android.view.View.OnClickListener;
  7. import android.widget.Button;
  8. public class MainActivity extends Activity {

  9.     private String jsonData = "{\"name\":\"liweibing\",\"age\":20}";//这里不是json数组,而是json对象
  10.     private Button button;
  11.     
  12.     @Override
  13.     protected void onCreate(Bundle savedInstanceState) {
  14.         super.onCreate(savedInstanceState);
  15.         setContentView(R.layout.activity_main);
  16.         button = (Button)findViewById(R.id.buttonId);
  17.         button.setOnClickListener(new ButtonListener());
  18.     }

  19.     /*1、创建一个JsonUtils对象
  20.      *2、把要解析的字符串jsonData调用JsonUtils对象的parseJson方法进行解析
  21.      * */    
  22.     public class ButtonListener implements OnClickListener{
  23.         @Override
  24.         public void onClick(View v) {
  25.             JsonUtils jsonUtils = new JsonUtils();
  26.             jsonUtils.parseUserFromJson(jsonData);    
  27.         }
  28.     }
  29. }


  30. //User.java
  31. package com.lwb.json02;
  32. public class User {
  33.     
  34.     private String name;
  35.     private int age;
  36.     
  37.     public String getName() {
  38.         return name;
  39.     }
  40.     public void setName(String name) {
  41.         this.name = name;
  42.     }
  43.     public int getAge() {
  44.         return age;
  45.     }
  46.     public void setAge(int age) {
  47.         this.age = age;
  48.     }    
  49. }


  50. //JsonUtils.java
  51. package com.lwb.json02;
  52. import com.google.gson.Gson;


  53. /* 在中能了解json的用法 ;
  54.  * 在中下载
  55.  * google-gson-2.2.4-release.zip 解压到google-gson-2.2.4-release
  56.  * 并把gson-2.2.4.jar 拷贝到工程的新建lib目录下
  57.  * 点击gson-2.2.4.jar 右击选 Bluid Path -> add to Bluid Path 添加库路径
  58.  * */

  59. /*1、定义一个JsonUtils类,并实现parseJson(String jsonData)方法
  60.  *2、parseJson具体实现:
  61.  *        1、定义一个Gson对象:gson = new Gson();
  62.  *        2、解析user = gson.fromJson(JsonData,User.class);里边传入的是要解析的字符串jsonData,和解析的类型User.class    
  63.  */

  64. public class JsonUtils {
  65.     public void parseUserFromJson(String jsonData){
  66.         Gson gson = new Gson();
  67.         User user = gson.fromJson(jsonData,User.class);        
  68.         System.out.println("name---->"+ user.getName());        
  69.         System.out.println("age--->"+ user.getAge());        
  70.     }    
  71. }

以对象的形式对json进行解析(可以解析一个对象)

点击(此处)折叠或打开

  1. //MainActivity.java
  2. package com.lwb.json03;
  3. import android.os.Bundle;
  4. import android.app.Activity;
  5. import android.view.Menu;
  6. import android.app.Activity;
  7. import android.os.Bundle;
  8. import android.view.View;
  9. import android.view.View.OnClickListener;
  10. import android.widget.Button;

  11. public class MainActivity extends Activity {
  12.     private Button button = null;
  13.     private String jsonData = "[{\"name\":\"liweibing\",\"age\":24},{\"name\":\"wangwu\",\"age\":20}]";
  14. //    private String jsonData = "[{\"name\":\"Michael\",\"age\":20},{\"name\":\"Mike\",\"age\":21}]";
  15.     @Override
  16.     public void onCreate(Bundle savedInstanceState) {
  17.         super.onCreate(savedInstanceState);
  18.         setContentView(R.layout.activity_main);
  19.         button = (Button)findViewById(R.id.buttonId);
  20.         button.setOnClickListener(new ButtonListener());
  21.     }
  22.     
  23.     private class ButtonListener implements OnClickListener{

  24.         @Override
  25.         public void onClick(View v) {
  26.             JsonUtils jsonUtils = new JsonUtils();
  27.             jsonUtils.parseUserFromjson(jsonData);
  28.         }     
  29.     }
  30. }

  31. //User.java
  32. package com.lwb.json03;

  33. public class User {
  34.     private String name ;
  35.     private int age ;
  36.     public String getName() {
  37.         return name;
  38.     }
  39.     public void setName(String name) {
  40.         this.name = name;
  41.     }
  42.     public int getAge() {
  43.         return age;
  44.     }
  45.     public void setAge(int age) {
  46.         this.age = age;
  47.     }
  48. }


  49. //JsonUtils.java
  50. package com.lwb.json03;
  51. import java.lang.reflect.Type;
  52. import java.util.Iterator;
  53. import java.util.LinkedList;
  54. import com.google.gson.Gson;
  55. import com.google.gson.reflect.TypeToken;

  56. /* 在中能了解json的用法 ;
  57.  * 在中下载
  58.  * google-gson-2.2.4-release.zip 解压到google-gson-2.2.4-release
  59.  * 并把gson-2.2.4.jar 拷贝到工程的新建lib目录下
  60.  * 点击gson-2.2.4.jar 右击选 Bluid Path -> add to Bluid Path 添加库路径
  61.  * */

  62. /*1、定义一个JsonUtils类,并实现parseJson(String jsonData)方法
  63.  *2、parseJson具体实现:
  64.  *        1、定义一个Gson对象:gson = new Gson();
  65.  *        2、定义一个类型:Type listtype = new TypeToken>(){}.getType();
  66.  *        3、解析users = gson.fromJson(JsonData,listtype);里边传入的是要解析的字符串jsonData,和解析的类型listType
  67.  */
  68. public class JsonUtils {
  69.     public void parseUserFromjson(String jsonData){
  70.         /*Type表泛型,表示通用、所有的类型。
  71.          *TypeToken的用法:
  72.          *LinkedList的用法:
  73.          * */
  74.         Type listType = new TypeToken<LinkedList<User>>(){}.getType();
  75.         Gson gson = new Gson();
  76.         LinkedList<User> users = gson.fromJson(jsonData,listType);
  77.         for(Iterator iterator = users.iterator(); iterator.hasNext();){
  78.             User user = (User) iterator.next();
  79.             System.out.println("name--->" + user.getName());
  80.             System.out.println("age---->" + user.getAge());
  81.         }        
  82.     }
  83. }


阅读(973) | 评论(0) | 转发(0) |
0

上一篇:02_01_spinner的使用

下一篇:20140426

给主人留下些什么吧!~~