当前位置: 首页 > news >正文

东莞市外贸网站建设平台沈阳网页建站模板

东莞市外贸网站建设平台,沈阳网页建站模板,一个域名做多个网站,网站建设中最重要的Gson(又称Google Gson)是Google公司发布的一个开放源代码的Java库,主要用途为序列化Java对象为JSON字符串,或反序列化JSON字符串成Java对象。 依赖 Gradle: dependencies {implementation com.google.code.gson:gson:2.11.0 }…

Gson(又称Google Gson)是Google公司发布的一个开放源代码的Java库,主要用途为序列化Java对象为JSON字符串,或反序列化JSON字符串成Java对象。
在这里插入图片描述

依赖

Gradle:

dependencies {implementation 'com.google.code.gson:gson:2.11.0'
}

Maven:

<dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.11.0</version>
</dependency>

我们有的项目中是使用gson解析网络请求返回数据。JSON转Java对象:使用fromJson(String json, Class classOfT)方法将JSON字符串转换为指定的Java对象类型。
代码:

  public static void main(String[] args) {Gson gson = new Gson();String json = "{\"id\":246989989011,\"algItemCode\":\"北京\",\"city\":\"北京\",\"platform\":\"web\"}";
//        Type type = new TypeToken<Response<ReportTwoDto>>() {
//        }.getType();Map jsonString = gson.fromJson(json, Map.class);// 输出JSON字符串System.out.println("Serialized JSON: " + jsonString);}
}

以上代码会出现:
类似:{id=2.46989989011E11, algItemCode=北京, city=北京, platform=web} ID为科学计数法的数据。

Gson为什么使用科学计数法

因为JSON规范中规定,数字必须以十进制格式表示。然而,当一个数字非常大或非常小时,直接使用普通的十进制表示可能会导致精度丢失或者无法表示。为了解决这个问题,JSON规范允许使用科学计数法来表示这些数字。

在Java中,当一个整数超过Integer.MAX_VALUE(2^31-1)时,它会自动转换为Long类型。同样,当一个浮点数超过Float.MAX_VALUE(大约为1.7E308)时,它会自动转换为Double类型。因此,当我们使用Gson将Java对象序列化为JSON字符串时,如果遇到非常大的数字,Gson会将其转换为科学计数法表示的字符串。

问题解决

  1. 转换时指定转换类,不要为map.
public static void main(String[] args) {Gson gson = new Gson();String json = "{\"id\":246989989011,\"algItemCode\":\"北京\",\"city\":\"北京\",\"platform\":\"web\"}";ReportTwoDto jsonString = gson.fromJson(json, ReportTwoDto.class);// 输出JSON字符串System.out.println("Serialized JSON: " + jsonString);}

输出:ReportTwoDto(id=246989989011, algItemCode=北京)

TypeToken是一种用于在Java中解决泛型类型擦除问题的工具,它通过反射机制获取泛型参数的具体类型,从而支持在运行时进行泛型类型的操作。
TypeToken通过匿名内部类的使用来保留泛型信息。具体来说,当创建一个TypeToken实例时,会生成一个匿名内部类,这个匿名类包含了泛型参数的实际类型信息。

public static void main(String[] args) {Gson gson = new Gson();String json = "{\"data\":{\"id\":246989989011,\"algItemCode\":\"北京\",\"city\":\"北京\",\"platform\":\"web\"}}";Type type = new TypeToken<Response<ReportTwoDto>>() {}.getType();Response<ReportTwoDto> jsonString = gson.fromJson(json, type);// 输出JSON字符串System.out.println("Serialized JSON: " + jsonString.data);}

也能输出:
Serialized JSON: ReportTwoDto(id=246989989011, algItemCode=北京)
Gson的TypeToken是一种强大的工具,通过在运行时保留泛型信息,解决了Java泛型类型擦除的问题。它在处理复杂JSON结构和泛型类型时非常有用,广泛应用于各种需要序列化和反序列化的场景中。
2. 使用工具类转换:

public static void main(String[] args) {Gson gson = new Gson();String json = "{\"id\":246989989011,\"algItemCode\":\"北京\",\"city\":\"北京\",\"platform\":\"web\"}";Map jsonString = gson.fromJson(json, Map.class);ReportTwoDto bean = BeanUtil.toBean(jsonString, ReportTwoDto.class);// 输出JSON字符串System.out.println("Serialized JSON: " + bean);}

其他工具替代

如果项目中对数字格式有严格要求,且不能接受科学计数法的表示方式,也可以考虑使用其他序列化工具,如FastJson等,这些工具可能提供了更多的控制选项来满足特定的需求。Gson使用科学计数法主要是出于优化存储空间和提高解析效率的考虑,但在某些情况下,这可能会导致不符合预期的结果。因此,了解如何调整Gson的行为或选择其他工具来满足特定需求是非常重要的。

http://www.zhongyajixie.com/news/6939.html

相关文章:

  • 无锡微信网站开发合肥今日头条最新消息
  • 技术网站的费用怎么做会计分录武汉it培训机构排名前十
  • 企业网站是如何做的富阳网站seo价格
  • 迷糊娃 wordpress 主题文山seo
  • 房产网站制作百度推广登录平台网址
  • 西宁哪家网络公司做网站seo培训机构
  • 个人网站备案 一定要身份证所在地宁德市属于哪个省份
  • 爱是做的电影网站b2b有哪些电商平台
  • 网络运维是干嘛的北京网站优化合作
  • 宜兴埠网站建设seo就业指导
  • 工商网官网查询企业信息天津seo排名费用
  • org的域名网站全国各大新闻网站投稿
  • 网络运维基础知识河北seo技术
  • 大庆企业做网站seo在哪学
  • 商业网站备案流程乔拓云智能建站平台
  • 网站设计公司费用调价智能关键词软件
  • 白银做网站的董事目前常用的搜索引擎有哪些
  • 商城购物网站有哪些模块seo百度快照优化公司
  • 做旅游网约车的网站帮别人推广app赚钱
  • 菜谱网站开发系统济南最新消息今天
  • 宁波网站推广seo技术专员招聘
  • svg图片做网站背景全部视频支持代表手机浏览器
  • 免费网站建设 godaddy提升神马关键词排名报价
  • web中英文网站怎么做交换友情链接是什么意思
  • 设计的商城网站建设域名注册入口
  • 做网站题材无锡网站关键词推广
  • dw网站制作流程nba录像回放
  • 网站 目标线上招生引流推广方法
  • 花园桥网站建设成人教育机构排行前十名
  • 地方性门户网站有哪些十大网站排行榜