java数据接收转换问题

风语空音 2021-05-25 07:25:15
我这里后端调用restTemplate获取数据,得到response.getBody(),body内数据{"status":"040000","errors":"","result":{"data":"H4s+这是一个很长很长的字符串,超过了java常量池的大小”}},我现在要获取data里的数据,然后将它转换为字节数组或者字符串(注意:如果转换为字符串,请用StringBuffer接收,同时也会产生一个问题,StringBuffer一次也不能接收太长的数据,而data里的数据长度明显超过限制),请问如何获取并转换?
...全文
601 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
冰思雨 2021-06-21
  • 打赏
  • 举报
回复

测试的时候,不要把测试数据定义成一个大字符串,因为编译器会将它直接定义为常量。

先把测试的数据写到文件中, JSON串,就写成文本文件。

然后,运行程序的时候,读取文件,一般情况下就不会报常量池的问题了。

风语空音 2021-05-26
  • 打赏
  • 举报
回复
引用 2 楼 走一步-再走一步 的回复:
我就好奇能有多大,我1亿多个字符都能接受啊 https://img-blog.csdnimg.cn/20210430162122471.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3p5MTQwNA==,size_16,color_FFFFFF,t_70 你看看这个博客 : https://blog.csdn.net/zy1404/article/details/116305729
我的与你的有一点区别,你是已经放在文件中了,我的是从接口处获取到数据后,数据过大java中没有对应的数据结构接收,而且我的数据是先gzip压缩后base64加密的,没办法像你那样拆分,否则我就没办法解密了
风语空音 2021-05-26
  • 打赏
  • 举报
回复
引用 1 楼 得一以生 的回复:
如果data里的数据能超过java常量池大小,请问response.getBody()你是如何返回的呢,body里还有{"status":"040000","errors":"","result":{"data"这些东西,设计不合理吧,用啥都接受不了啊,没有意义
我用restTemplate从另一个接口获取的,response.getBody()数据放在返回体中,我现在的一个想法是既然java中普通的数据类型没有能接收超过7000个字节的,那我就定义一个bean去接收结果,其中result用byte[]类型,对result进行截取,获得data之后的数据
  • 打赏
  • 举报
回复
我就好奇能有多大,我1亿多个字符都能接受啊 https://img-blog.csdnimg.cn/20210430162122471.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3p5MTQwNA==,size_16,color_FFFFFF,t_70 你看看这个博客 : https://blog.csdn.net/zy1404/article/details/116305729
得一以生 2021-05-25
  • 打赏
  • 举报
回复
如果data里的数据能超过java常量池大小,请问response.getBody()你是如何返回的呢,body里还有{"status":"040000","errors":"","result":{"data"这些东西,设计不合理吧,用啥都接受不了啊,没有意义

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧