分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 运营维护

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

发布时间:2023-09-06 02:31责任编辑:胡小海关键词:jsjson

一、创建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();方法获取

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

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

例如:

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();

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

原文地址:https://www.cnblogs.com/pxzbky/p/10323947.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved