首页 > 作文

java fastjson传输long数据却接收到了int的问题

更新时间:2023-04-04 14:19:30 阅读: 评论:0

目录
fastjson传输long数据却接收到了int使用fastjson做数据类型转换数据转化为json将json数据解析

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

最近在java开发中发现一个有趣现象,在网元a中的一个vo里有个类型为long的taskid字段,用fastj爱好特长有哪些son将其转为json字符串,用http请求传给网元b,网元b用一个map接收该实体,接收到后却发taskid其数据类型为integer,如下图一所示。

此时如果用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,如图二所示。

那么后端我们怎么接受这个数据呢,笔者想到了integer和穿内衣的正确方法long的父类,查看发现她有public abstract int intvalue();public传发 abstract long longvalue();,故思考可否先用父类接受再用longvalue转为long类型呢?后测试可行,结果见图三。

小结一下:对于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:

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

package entity;public class ur {     private integer id ;    private string urname ;    private string password;  public void tid(integer id) {        this.id = id;    }    public void turname(string urname) {        this.urname = urname;    }    public void tpassword(string password) {        this.password = password;    }    public integer getid() {        return id;    }    public string geturname() {        return urname;    }    public string getp我的童年记忆assword() {        return password;    }    @override    public string tostring() {        return "ur{" +                "id=" + id +                ", urname='" + urname + '\'' +                ", password='" + password + '\'' +                '}';    }}

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

package rvice.impl;import com.alibaba.fastjson.json;import entity.ur;import java.util.hashmap;import java.util.map;public class maptojson {    public static void main(string[] args) {        ur us = new ur();        us.tid(1);        us.turname("lisa");        us.tpassword("110");        ur u2 = new ur();        u2.tid(2);        u2.turname("julian");        u2.tpassword("120");                /**         * map转为json         */        map<string, ur> maps = new hashmap<string, ur>();        maps.put("1", us);        maps.put("2", u2);        system.out.println("maps = " + json.tojsonstring(maps));            }}

获得结果:

maps = {“1”:{“id”:1,”password”:”110″,”urname”:”lisa”},”2″:{“id”:2,”password”:”120″,”urname”:”julian”}}

2) 将字符串转化为json

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

 /**     * 二. 将字符串转为json     */    ca 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,rializerfeature.prettyformat)println(result2)

结果:{“rule1″:”kasa”,”rule2″:”uzi”}

将json数据解析

 /**     *   一.  将json数据解析,获得具体的值     */解析多层嵌套数据:     val str = "{\"error\":200,\"msg\":null,\"tianji_api_agentn_fenqiscorev10_respon\":{\"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.parobject(str)    //根据key获得值并获得一个jsonobject    val tj: jsonobject =json.getjsonobject("tianji_api_agentn_fenqiscorev10_respon")    //根据上一个jsonobject获得对应key的value    val tag=tj.getjsonobject("tags")    //获取多级嵌套json的具体key的value    val result=tag.getstring("150")    println(result)

以上为个人经验,希望能给大家一个参考,也希望大家多多支持www.887551.com。

本文发布于:2023-04-04 14:19:28,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/cff835540c430aeda1a26a759f81bb5b.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:java fastjson传输long数据却接收到了int的问题.doc

本文 PDF 下载地址:java fastjson传输long数据却接收到了int的问题.pdf

标签:数据   转化为   字符串   对象
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图