一、首先这两个是不同包下的两个类这点一定要明确。
二、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();