广告
返回顶部
首页 > 资讯 > 精选 >java fastjson传输long数据接收到了int的问题怎么解决
  • 666
分享到

java fastjson传输long数据接收到了int的问题怎么解决

2023-06-26 06:06:54 666人浏览 安东尼
摘要

这篇“java fastJSON传输long数据接收到了int的问题怎么解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看

这篇“java fastJSON传输long数据接收到了int的问题怎么解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“java fastjson传输long数据接收到了int的问题怎么解决”文章吧。

fastjson传输long数据却接收到了int

最近在java开发中发现一个有趣现象,在网元A中的一个vo里有个类型为Long的taskId字段,用fastjson将其转为json字符串,用Http请求传给网元B,网元B用一个map接收该实体,接收到后却发taskID其数据类型为Integer,如下图一所示。

java fastjson传输long数据接收到了int的问题怎么解决

此时如果用long taskId= (long) reqMap.get("taskId");保存字段就会报如下错误java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long如果taskId大于整型范围,那会是什么场景呢?笔者做了如下尝试,首先查询出Integer.MAX_VALUE的值为2147483647,然后将taskId的值设置为比它大的3147483647,发现网元B接受到的数据类型为Long,如图二所示。

java fastjson传输long数据接收到了int的问题怎么解决

那么后端我们怎么接受这个数据呢,笔者想到了Integer和Long的父类,查看发现她有public abstract int intValue();public abstract long longValue();,故思考可否先用父类接受再用longValue转为long类型呢?后测试可行,结果见图三。

java fastjson传输long数据接收到了int的问题怎么解决

小结一下:对于long 类型可以先用Number接收,然后再抓为long,Number b = (Number) reqMap.get("taskId"); taskId =b.longValue();

使用FastJson做数据类型转换

因为工作中会经常用到json数据和对象,集合,map,以及字符串之间的转换,因此做好一个总结

引入一个fastjosn的依赖

             <dependency>                 <groupId>com.alibaba</groupId>                 <artifactId>fastjson</artifactId>                 <version>1.2.47</version>             </dependency>

Java:

数据转化为JSON

Note:

  由于Scala的集合和Map不同于JAVA,因此此处使用java做对象转为json的案例,如有需要,可以封装对应的方法,然后使用scala调用即可

1) 将对象转化为json:

写一个user类,作为对象转化为json案例:

package entity;public class user {     private Integer id ;    private String username ;    private String passWord;  public void setId(Integer id) {        this.id = id;    }    public void setUsername(String username) {        this.username = username;    }    public void setPassword(String password) {        this.password = password;    }    public Integer getId() {        return id;    }    public String getUsername() {        return username;    }    public String getPassword() {        return password;    }    @Override    public String toString() {        return "user{" +                "id=" + id +                ", username='" + username + '\'' +                ", password='" + password + '\'' +                '}';    }}

将对象放在Map中转化为json:

package service.impl;import com.alibaba.fastjson.JSON;import entity.user;import java.util.HashMap;import java.util.Map;public class MapToJson {    public static void main(String[] args) {        user us = new user();        us.setId(1);        us.setUsername("lisa");        us.setPassword("110");        user u2 = new user();        u2.setId(2);        u2.setUsername("julian");        u2.setPassword("120");                        Map<String, user> maps = new HashMap<String, user>();        maps.put("1", us);        maps.put("2", u2);        System.out.println("maps = " + JSON.toJSONString(maps));            }}

获得结果:

maps = {"1":{"id":1,"password":"110","username":"lisa"},"2":{"id":2,"password":"120","username":"julian"}}

2) 将字符串转化为json

将字符串转化为json,因为在数据处理中使用语言为 scala,因此使用scala作为案例:

     case class student(                       id:Int,                       name:String                      )    var maps=Map[String,student]()     val stu1=student(1,"lisa")     val stu2=student(2,"july")    maps+=("1"->stu1)    maps+=("2"->stu2)   val result2: String = JSON.toJSONString(maps,SerializerFeature.PrettyFORMat)println(result2)

结果:{"rule1":"kasa","rule2":"uzi"}

将json数据解析

 解析多层嵌套数据:     val str = "{\"error\":200,\"msg\":null,\"tianji_api_agentn_fenqiscorev10_response\":{\"tags\":{\"150\":0,\"151\":0,\"152\":0,\"153\":0,\"154\":0,\"110\":0,\"111\":0,\"112\":1,\"113\":0,\"114\":0,\"115\":0,\"116\":0,\"117\":0,\"118\":0,\"119\":3,\"161\":3,\"162\":1,\"120\":0,\"121\":5,\"122\":0,\"123\":0,\"124\":0,\"125\":2,\"5\":\"Android\",\"126\":0,\"127\":4,\"128\":0,\"129\":0,\"130\":0,\"131\":0,\"132\":0,\"133\":0,\"134\":0,\"135\":0,\"136\":0,\"137\":0,\"138\":0,\"139\":0,\"140\":3,\"141\":0,\"142\":5,\"143\":3,\"144\":0,\"101\":0,\"145\":6,\"102\":1,\"146\":0,\"103\":1,\"147\":0,\"148\":0,\"104\":0,\"149\":0,\"105\":3,\"106\":5,\"107\":0,\"108\":2,\"109\":2,\"credit_score\":457},\"biz_id\":\"2589e393-004d-4b37-b0ab-23455c4bbde2\",\"req_id\":\"15422508480665693989\"},\"request_id\":\"15422508480517778031\"}"    //将字符串转为jsonobject    val json: JSONObject =JSON.parseObject(str)    //根据key获得值并获得一个jsonobject    val tj: JSONObject =json.getJSONObject("tianji_api_agentn_fenqiscorev10_response")    //根据上一个jsonobject获得对应key的value    val tag=tj.getJSONObject("tags")    //获取多级嵌套json的具体key的value    val result=tag.getString("150")    println(result)

以上就是关于“java fastjson传输long数据接收到了int的问题怎么解决”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网精选频道。

--结束END--

本文标题: java fastjson传输long数据接收到了int的问题怎么解决

本文链接: https://www.lsjlt.com/news/307050.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • java fastjson传输long数据接收到了int的问题怎么解决
    这篇“java fastjson传输long数据接收到了int的问题怎么解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看...
    99+
    2023-06-26
  • java fastjson传输long数据却接收到了int的问题
    目录fastjson传输long数据却接收到了int使用FastJson做数据类型转换数据转化为JSON将json数据解析fastjson传输long数据却接收到了int 最近在ja...
    99+
    2022-11-12
  • 怎么解决php post不能接收数据的问题
    在进行web开发时,我们经常会使用php作为后端语言来处理数据请求和响应。其中,使用PHP接收POST请求数据是非常常见和必要的。但是,有时候我们会发现,我们的php代码无法接收到POST请求的数据,这很可能会导致我们的程序无法正常运行。那...
    99+
    2023-05-14
  • SpringBoot @PostMapping接收HTTP请求的流数据问题怎么解决
    这篇文章主要讲解了“SpringBoot @PostMapping接收HTTP请求的流数据问题怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SpringBoot ...
    99+
    2023-07-05
  • SQL数据库连接超时时间已到的问题怎么解决
    这篇文章主要介绍“SQL数据库连接超时时间已到的问题怎么解决”,在日常操作中,相信很多人在SQL数据库连接超时时间已到的问题怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”SQL数据库连接超时时间已到的...
    99+
    2023-07-06
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作