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

原文标题:net.sf.json.JSONObject 和org.json.JSONObject 的差别

其实,出现fromObject没有被定义,是因为json有两个包,就是net.sf.json和org.json。在使用json的过程中,会有包的导入。 
导入的页面

看你选择导入的包,如果选择的是org.json.json这个包,就会出现undefined。

下面是转载过来的文章。关于两个包之间的区别。 
net.sf.json.JSONObject 和org.json.JSONObject 的差别。

一、创建json对象

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

org.json.JSONObject:

JSONObject json = new JSONObject(str);
  • 1

net.sf.json.JSONObject:

JSONObject json = JSONObject.fromObject(str);
  • 1

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");
  • 1
  • 2
{\"availableBalance\":\"31503079.02\"}}";
  • 1

org.json.JSONObject 就会报错,可以msgObj.getDouble(“availableBalance”);也不会丢精度;

net.sf.json.JSONObject正确,但是精度会丢失,如果 
String str = "{\"code\":\"0000\", \"msg\":

扫描二维码关注公众号,回复: 1931613 查看本文章

就不会丢失精度。

第二中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;
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

org.json.JSONObject:

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

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

net.sf.json.JSONObject:

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

三、从json中获取数组

JSONArray subArray = json.getJSONArray(“msg”);

net.sf.json.JSONObject:

int leng = subArray.size();
  • 1

org.json.JSONObject:

int leng = subArray.length();
  • 1

json net.sf.json的需要的包: 
下载地址:http://download.csdn.net/detail/shaoqianting/8698183

猜你喜欢

转载自blog.csdn.net/weixin_41722928/article/details/80939689