zoukankan      html  css  js  c++  java
  • net.sf.json.JSONObject 和org.json.JSONObject 的差别

    http://my.oschina.net/wangwu91/blog/340721

    net.sf.json.JSONObject 和org.json.JSONObject  的差别。

    一、创建json对象

    String str = "{"code":"0000", "msg":{"availableBalance":31503079.02}}

    org.json.JSONObject:

    JSONObject json = new JSONObject(str);

    net.sf.json.JSONObject:

    JSONObject json = JSONObject.fromObject(str);  net.sf.json.jsonobject 没有 new JSONObject(String)的构造方法

    二、解析json

    第一种直接用json对象.getXXX();方法获取

    net.sf.json.JSONObject: 没有严格要求获取字段的类型跟getXXX()的类型一样

    org.json.JSONObject:获取的字段类型必须跟getXXX()的类型一样

    e.g.

    JSONObject msgObj = json.getJSONObject("msg");

    String availableBalance = msgObj.getString("availableBalance");

    如果在org.json.JSONObject 就会报错,可以msgObj.getDouble("availableBalance");也不会丢精度;而net.sf.json.JSONObject正确,但是精度会丢失,如果String str = "{"code":"0000", "msg":{"availableBalance":"31503079.02"}}";

    就不会丢失精度。

    第二中json对象直接转变实体对象

    public class BalanceDto {
    private String availableBalance;
    public String getAvailableBalance() {
    return availableBalance;
    }
    public void setAvailableBalance(String availableBalance) {
    this.availableBalance = availableBalance;
    }
    public String toString(){

    return "availableBalance   "+availableBalance;
    }


    }
    org.json.JSONObject:

    BalanceDto alanceDto  = (BalanceDto) JSONObject.stringToValue(msgObj);

    这个句话编译通过,但是运行会报错,原因是BalanceDto 类中availableBalance 的类型跟json中的“availableBalance ”类型不同意

    net.sf.json.JSONObject:

    String msg = json.getString("msg");
    BalanceDto  alanceDto = (BalanceDto) JSONObject.toBean(
    msg, new BalanceDto().getClass());

    三、从json中获取数组

    JSONArray subArray = json.getJSONArray("msg");

    net.sf.json.JSONObject:

    int leng = subArray.size();

     org.json.JSONObject:

    int leng = subArray.length();

    还有其他的差别 可以比较两个api文档,如有错误 还请提出,可以发邮件到2541wang@sina.com

  • 相关阅读:
    工作笔记(一)
    如何修改mindmanager默认字体为微软雅黑
    彻底解决zend studio 下 assignment in condition警告
    PHP5.2至5.6的新增功能详解
    ThinkPHP中的模型命名
    12大网站建设技巧 让访客信任你
    CentOS 7.0编译安装Nginx1.6.0+MySQL5.6.19+PHP5.5.14
    几种不错的编程字体
    大型网站的灵魂——性能
    MySQL: InnoDB 还是 MyISAM?
  • 原文地址:https://www.cnblogs.com/jixu8/p/4285291.html
Copyright © 2011-2022 走看看