net.sf.json.JSONObject 跟 org.json.JSONObject  的差异

一、首先这两个是不同包下的两个类这点一定要明确。

二、Json 对象的创建

String result= "{\"code\":\"0000\", \"msg\":{\"retailPrice\":99.99}}

org.json.JSONObject:JSONObject json = new JSONObject(result);

net.sf.json.JSONObject:

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

二、Json的解析

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

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

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

example:

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

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

上面的方式使用org.json.JSONObject 会报错,但可以使用msgObj.getDouble("availableBalance")得到 值 "99.99";

 

而使用net.sf.json.JSONObject就不会报错

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

public class PriceDto {
private String retailPrice;
public String getRetailPrice() {
return retailPrice;
}
public void setRetailPrice(String retailPrice) {
this.availableBalance = retailPrice;
}
public String toString(){
return "retailPrice"+retailPrice;
}
}
org.json.JSONObject:

PriceDto priceDto= (PriceDto) JSONObject.stringToValue(msgObj);

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

net.sf.json.JSONObject:

String msg = json.getString("msg");
PriceDto priceDto= (PriceDto) JSONObject.toBean(
msg, new PriceDto().getClass());

三、从Json对象中获取数组对象

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

net.sf.json.JSONObject:

int leng = subArray.size();

 org.json.JSONObject:

int leng = subArray.length();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值