一、首先今天在写一个功能时遇到和这个问题,就是在调用的百度识别接口需要这个json包,而我平常解        析json习惯了用这个包,那么问题问题来了:

1. 这个的时候,引入的包是org.json.JSONObject

2.这个的时候,引入的包是net.sf.json.JSONObject

所以找了以下的方法来解决此问题:

二、net.sf.json.JSONObject 和org.json.JSONObject  的差别:

1.创建json对象

String str="{\"words_result\":{\"性别\":{\"words\":\"男\",\"location\":{\"height\":47,\"width\":39,\"left\":327,\"top\":415}},\"姓名\":{\"words\":\"陈晔\",\"location\":{\"height\":58,\"width\":182,\"left\":327,\"top\":295}},\"住址\":{\"words\":\"甘肃省天水市\",\"location\":{\"height\":123,\"width\":546,\"left\":330,\"top\":626}},\"公民身份号码\":{\"words\":\"620523199701148098\",\"location\":{\"height\":51,\"width\":731,\"left\":548,\"top\":903}},\"出生\":{\"words\":\"19970114\",\"location\":{\"height\":51,\"width\":432,\"left\":330,\"top\":512}},\"民族\":{\"words\":\"汉\",\"location\":{\"height\":45,\"width\":36,\"left\":604,\"top\":412}}},\"direction\":0,\"words_result_num\":6,\"image_status\":\"normal\",\"log_id\":83981779274812}";
2.当引入org.json.JSONObject:

JSONObject json = new JSONObject(str);

net.sf.json.JSONObject:

JSONObject json = JSONObject.fromObject(str);

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

3.一个测试案例

package com.yinxin.server;import org.json.JSONObject;public class Test {public static void main(String[] args) {//引用import org.json.JSONObject 来完成的json解析//一层一层往下解析String idCardFront="{\"words_result\":{\"性别\":{\"words\":\"男\",\"location\":{\"height\":47,\"width\":39,\"left\":327,\"top\":415}},\"姓名\":{\"words\":\"石头\",\"location\":{\"height\":58,\"width\":182,\"left\":327,\"top\":295}},\"住址\":{\"words\":\"甘肃省挂就是给对方卡咖啡店\",\"location\":{\"height\":123,\"width\":546,\"left\":330,\"top\":626}},\"公民身份号码\":{\"words\":\"62052334645747540\",\"location\":{\"height\":51,\"width\":731,\"left\":548,\"top\":903}},\"出生\":{\"words\":\"19950913\",\"location\":{\"height\":51,\"width\":432,\"left\":330,\"top\":512}},\"民族\":{\"words\":\"汉\",\"location\":{\"height\":45,\"width\":36,\"left\":604,\"top\":412}}},\"direction\":0,\"words_result_num\":6,\"image_status\":\"normal\",\"log_id\":8398123423274812}";JSONObject jsonStr = new JSONObject(idCardFront);JSONObject msgObj = jsonStr.getJSONObject("words_result");JSONObject sex=msgObj.getJSONObject("性别");String words=sex.getString("words");System.out.println("msgObj格式下:["+msgObj+"]\n\ns e x 格式下:["+sex+"]\n\nwords 格式下:["+words+"]");}}

效果图:

效果图返回的json字符串:

msgObj格式下:[{"性别":{"words":"男","location":{"height":47,"width":39,"left":327,"top":415}},"姓名":{"words":"石头","location":{"height":58,"width":182,"left":327,"top":295}},"住址":{"words":"甘肃省挂就是给对方卡咖啡店","location":{"height":123,"width":546,"left":330,"top":626}},"出生":{"words":"19950913","location":{"height":51,"width":432,"left":330,"top":512}},"公民身份号码":{"words":"62052334645747540","location":{"height":51,"width":731,"left":548,"top":903}},"民族":{"words":"汉","location":{"height":45,"width":36,"left":604,"top":412}}}]s e x 格式下:[{"words":"男","location":{"height":47,"width":39,"left":327,"top":415}}]words 格式下:[男]

         注:这个是引用 org.json.JSONObject写的一个小demo,引用另外一个,因为平常用就不再举例了,想测试一下的话,可以                 自己试一下

三、解析json

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

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

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

例如:

String str = "{\"code\":\"0000\", \"msg\":{\"balance\":\"31503079.02\"}}";

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

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

如果在org.json.JSONObject 就会报错,可以msgObj.getDouble("balance");也不会丢精度;而net.sf.json.JSONObject正确,但是精度会丢失;

2.第二个json对象直接转变实体对象

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

return "balance"+balance;
}

}
org.json.JSONObject:

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

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

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

java中关于引用net.sf.json.JSONObject 和org.json.JSONObject 的差别相关推荐

  1. [转载] Java中如何引用另一个类里的集合_Java工程师面试题整理

    参考链接: 在Java中将预定义的类名用作类或变量名 花了一星期把学过的都整理一遍 尽量易懂,从基础到框架 最新版大厂面经汇总出炉,持续更新中 汇总完了上传网盘,设计到后端架构师的一切知识 如果没更新 ...

  2. java中是引用传递还是值传递....

    刚才与Z师兄聊天,他提问: 你说java中是引用传递还是值传递啊? 当时俺搞混了这个"传递"的意思, 本来以为是对象的实例化比如: abc a=new abc(); 这个a 是引用 ...

  3. java虚引用作用_深入理解Java中的引用(二)——强软弱虚引用

    深入理解Java中的引用(二)--强软弱虚引用 在上一篇文章中介绍了Java的Reference类,本篇文章介绍他的四个子类:强引用.软引用.弱引用.虚引用. 强引用(StrongReference) ...

  4. java 指针 引用_C++中的指针和引用与Java中的引用区别

    C++的指针和Java中的引用比较像,在作为函数参数传递时,都可以在函数内部改变 "外部" 的值 C++的引用使用时必须是初始化的,他是一段内存的别名,因此也可以在函数内部改变&q ...

  5. 请注意,java中没有引用传递

    今天在论坛上有人提了一个关于java中调用函数时有没有引用传递的问题,可谓是吵的不可开交.有人说java只有值传递,也有人说java既有值传递也有引用传递,那么java中到底有没有引用传递呢,下面我来 ...

  6. Java中 方法引用、Stream流、及方法实例 D190401

    Java中 方法引用.Stream流.及方法实例 D190401 01.第三章:方法引用_什么是方法引用 1).什么是"方法引用":指引用现有的方法代替Lambda表达式--当我们 ...

  7. java byreference_深入理解Java中的引用(一)——Reference

    深入理解Java中的引用(一)--Reference 本系列文章首先会介绍Reference类,为之后介绍的强引用.软引用.弱引用和虚引用打下基础. 最后会介绍虚引用在DirectBuffer回收中的 ...

  8. 类和对象系列教材 (一)- 什么是Java中的引用?

    类和对象系列教材 (一)- 什么是Java中的引用? 更多详细内容请点击这里,注册获取 引用的概念,如果一个变量的类型是 类类型,而非基本类型,那么该变量又叫做引用. 步骤1:引用和指向 步骤2:多个 ...

  9. JAVA中的引用四种引用类型

    关于值类型和引用类型的话题,C++.JAVA.python.go.C#等等高级语言都有相关的概念,只要理解了其底层工作原理,可以说即使是不同的语言,在面试学习工作实践中都可以信手拈来(不要太纠集语言) ...

最新文章

  1. Singleton Pattern
  2. highgui java opencv_java – OpenCV 3.0.0 JAR缺少HighGUI
  3. Junit5新功能一览
  4. 访问自己的网站有病毒提示,为什么?
  5. View的滚动原理简单解析(二)
  6. java与python结合使用_Java与Python使用grpc跨平台调用
  7. 抖音视频怎么下载MP4格式怎么转换为MP3
  8. 超详细! 利用Synopsys VCS对Verilog代码加密的四种方法
  9. 6.Alarm 闹钟服务
  10. 马化腾和朱啸虎互怼之后,摩拜ofo合并可能性基本为零
  11. rdt不同版本(rdt1.0,rdt2.0,rdt2.1,rdt2.2,rdt3.0)协议的特点以及发送端接收端的FSM
  12. 【算法分析】回溯法解数独(九宫格)算法
  13. 用c语言实现图书信息管理系统
  14. ios wifi 定位_iOS开发Wifi 定位原理及iOS Wifi 列表获取
  15. python爬取大学生就业分析专科和本科的信息https://edu.jobui.com/major/(上)JSON的存储
  16. 《Python 深度学习》6.1.3 整合在一起:从原始文本到词嵌入
  17. 云服务器运维兼职,云服务器的维护工作主要有哪些?
  18. 链表结点定义---指针指向结点
  19. Linux——cut命令
  20. C语言:最大公约数。

热门文章

  1. 哈工大机器学习复习笔记(一)
  2. OAF框架的基本思想--基于MVC模式
  3. IE浏览器中选择本地文件
  4. 酷视网页视频VR播放器SDK(进取版)使用说明书
  5. 小程序页面间传参的五种方式
  6. 天地伟业客户端服务器维护,天地伟业监控官网客户端app
  7. YGG 和 BlockchainSpace 举办全国最大的 Web3 活动:Philippine Web3 Festival
  8. Java第三次作业——面向对象基础(封装)
  9. 【调剂】211北京邮电大学2020年计算机学院硕士研究生招生缺额信息
  10. 【考前冲刺】计算机三级网络技术之综合题-sniffer抓包分析