Json对象解析

(一)在网络数据传输中,经常用到Json或者xml,两者在可读性、解析手段上均比较好,但是Json优势是体积小,与JavaScript交互方便,缺点是对数据的可描述性比较差。

(二)Json由一系列的键值对的集合或 数组对象。

(三)例子:{"name”:"zhangsan","age":10}或者[{"name”:"zhangsan","age":10},:{"name”:"lisi","age":20}]

(四)解析

可以调用Google-gson进行解析,参考里面的例子。从android 3.0开始,android加入了JsonReader类,该类可以控制Json的读取。

下面是个例子:

1.JsonDemoActivity类

package com.wewell.json;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

//Json源数据及调用解析

public class JsonDemoActivity extends Activity {
    /** Called when the activity is first created. */
 private Button btn_json = null;//测试json数据
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        btn_json = (Button)findViewById(R.id.btnjson);
        btn_json.setOnClickListener(new testJson());
    }
   
    class testJson implements OnClickListener{

  @Override
  public void onClick(View v) {
   // TODO Auto-generated method stub
   JsonUtils json = new JsonUtils();
   String jsonData = "[{\"name\":\"Michael\",\"age\":20},{\"name\":\"Mike\",\"age\":21}]";
   json.parseJson(jsonData);
   String jsonData2 = "{\"name\":\"test\",\"age\":10}";
   json.partJson2(jsonData2);
   json.parseUserFromJson(jsonData);
  }
     
    }
}

2.JsonUtils类

package com.wewell.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;

//执行解析Json操作

public class JsonUtils {
 
 public void partJson2(String jsonData){
  Gson gson = new Gson();
  User user = gson.fromJson(jsonData, User.class);//Json对象转换为对象
  System.out.println("Json对象:name--->" + user.getName());
  System.out.println("Json对象:age---->" + user.getAge());
  
 }
 
 public void parseJson(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(tagName.equals("name")){
      System.out.println("name--->" + reader.nextString());
     }
     else if(tagName.equals("age")){
      System.out.println("age--->" + reader.nextInt());
     }
    }
    reader.endObject();//结束解析数组中对象
   }
   reader.endArray();//结束解析数组
  }
  catch(Exception e){
   e.printStackTrace();
  }
 }
 
 public void parseUserFromJson(String jsonData){
  
  Type listType = new TypeToken<LinkedList<User>>(){}.getType();
  Gson gson = new Gson();
  LinkedList<User> users = gson.fromJson(jsonData, listType);//进行Json对象转换为对象的迭代
  for (Iterator iterator = users.iterator(); iterator.hasNext();) {
   User user = (User) iterator.next();
   System.out.println("name--->" + user.getName());
   System.out.println("age---->" + user.getAge());
  }
  
 }
}

3.user类

package com.wewell.json;
/**
 * 联系Json对象转为实体对象
 * @author wangke
 *
 */
public class User {
 
 private String name=null;
 private int age = 0;
 
 public void setName(String name){
  this.name = name;
 }
 public void setAge(int age){
  this.age = age;
 }
 public String getName(){
  return this.name;
 }
 public int getAge(){
  return this.age;
 }
}

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值