一起Talk Android吧(第三百四十五回:解析JSON对象)

各位看官们,大家好,上一回中咱们说的是Android中JSON的例子,这一回中咱们介绍的例子是解析JSON对象。闲话休提,言归正转。让我们一起Talk Android吧!

看官们,我们在前面章回中介绍了JSON对象的格式,在本章回中我们将介绍如何去解析JSON对象,也就是把JSON对象转换成Java对象,下面是具体的操作步骤:

    1. 使用Json字符串创建JSONObject对象;
      这一步看着简单,不过有许多细节需要注意,下面是详细的操作步骤:
      首先自已定义一个JSON字符串,然后复制到程序中,AST会自动进行压缩转义(给字符串中的特殊符号添加转义字符,比如给双引号添加转义字符),例如复制{"id":11,"name":"jam","price":3.5,"path":"a/b/c"}这个字符串,然后在AST中做以下操作: String str = “”,在引号中粘贴上面复制来的字符串,会自动得到以下的转义字符串(一定要在光标中粘贴,否则不会自动添加转义)String jsonString = "{\"id\":11,\"name\":\"jam\",\"id\":33,\"name\":\"Nik\",\"price\":3.5,\"path\":\"a/b/c\"}";如果在AST中复制转义后的字符串,再粘贴到其它地方时AST会自动去掉字符中添加的转义。
      有时候自己创建的JSON字符串数据格式不对,需要修改才可以,我们可以使用SON Parser插件来检验字符串的格式是否正确。在正式的程序中不会自己创建JSON字符串,而是使用网络中web服务器返回的JSON数据。
    1. 创建JSONObject对象,把Json字符串传递给类的构造方法就可以创建JSONObject对象;
    1. 通过JSONObject对象的getXXX()或者optXXX()方法获取对象中的数值,这些方法的参数就是key,获取到的数值是value.getXXX方法与optXXX方法的区别在于前者读取不到数据时会抛出异常,后者读取不到数据时 返回null或者默认值;通常使用optXXX方法多一些,这样不会使程序因为异常而崩溃;
    1. 把从JSON字符串获取到的数据转换成Java对象,具体操作如下:
      定义一个Java对象,对象的类型是依据JSON数据的格式定义的,通常我们使用GsonFormat这个插件来辅助我们定义Java对象类型,我们把这种Java对象类型称作Java Bean.通过Java对象的set方法给的成员变量赋值,这样就把JSON字符串中存储的数据转换成了Java对象。下面是具体的示例代码,请大家参考:

public class JsonBeanType {
    /**
     * id : 11
     * name : jam
     * price : 3.5
     * path : a/b/c
     */

    private int id;
    private String name;
    private double price;
    private String path;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    public String getPath() {
        return path;
    }

    public void setPath(String path) {
        this.path = path;
    }

    @Override
    public String toString() {
        return "JsonBeanType{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", price=" + price +
                ", path='" + path + '\'' +
                '}';
    }
}


   String jsonString = "{\"id\":11,\"name\":\"jam\",\"price\":3.5,\"path\":\"a/b/c\"}";
   private void parseJsonObjectByJavaNative() {
       try {
           JSONObject jsonObject = new JSONObject(jsonString);
           JsonBeanType jsonBeanObject = new JsonBeanType();

           jsonBeanObject.setId(jsonObject.optInt("id"));
           jsonBeanObject.setName(jsonObject.optString("name"));
           jsonBeanObject.setPrice(jsonObject.optDouble("price"));
           jsonBeanObject.setPath(jsonObject.getString("path"));

           Log.d(TAG, "parseJsonDataByJavaNative: "+jsonBeanObject.toString());
       } catch (JSONException e) {
           e.printStackTrace();
       }
   }

上面代码中的JSONObject类是Java提供的,我们需要导入包,不过有类似的Json包,不要搞错了具体如下:

import org.json.JSONObject; (这是原生包)
import com.google.gson.JsonObject;(这是google提供的包)

代码中的JsonBeanType类是Java对象的类型,此类型就是我们依据JSON对象的格式定义的。 把上面的程序放到Android的工程中,然后添加到Button的监听器里,编译程序并且点击Button就可以看到以下运行结果 :

JsonBeanType{id=11, name='jam', price=3.5, path='a/b/c'}

看官们,关于Android中解析JSON对象的例子咱们就介绍到这里,欲知后面还有什么例子,且听下回分解!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

talk_8

真诚赞赏,手有余香

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值