FastJSON JSON.toJSONString 报错:ambiguous reference to overloaded definition

Scala Json 和 map/ bean对象的转换 + List 转Josn字符串 "ambiguous reference to overloaded definition" 用到:alibaba的fastjson 需求:需要将一个格式是[String,MonthValue]的map转换为json,这里YearValue是自定义的case class。 MonthValue长这样,这里需要加上@BeanProperty注解,否则 fastjson解析不到。 case class MonthValue(@BeanProperty ... 阅读详情
JSON.toJSONString 报错:ambiguous reference to overloaded definition

原因分析:Java在编译时,首先会根据实参的数量和类型(这里是2个实参,都为int类型,注意没有转成int数组)来进行处理,编译器想要“偷懒”,于是它会从最简单的开始“猜想”,只要符合编译条件的即可通过。

Scala分辨重载方法的过程与Java极为相似。任何情况下,被选中的重载版本都是最符合参数静态类型的那个。有时如果不止一个最符合的版本;这种情况下编译器会给你一个“ambiguous reference to overloaded definition”(模糊引用了重载定义的方法)的错误。

如果是原生的scala方法,则不会报这种错误。

如下两个方法在scala中使用

static String toJSONString(Object object) {
        ...
    }
static String toJSONString(Object object, com.alibaba.fastjson2.JSONWriter.Feature... features) {
       ...
    }
//在scala中使用会报错
JSON.toJSONString(str)//报错

//原生scala,不报错
object FUN4{
      def func(a:Int,str:String*): Unit ={
        println(a)
      }
      def func(a:Int): Unit ={
        println(a)
      }
}
FUN4.func(12)//不报错

解决方法1:
参考:https://stackoverflow.com/questions/6209120/scala-ambiguous-reference-to-overloaded-definition-with-varargs


解决方法2:

import scala.collection.mutable
import com.alibaba.fastjson2.JSON
import com.alibaba.fastjson2.JSONWriter
import com.alibaba.fastjson2.JSONReader
//import com.alibaba.fastjson.JSON
//import com.alibaba.fastjson.serializer.SerializerFeature

JSON.toJSONString(jsonStr,JSONWriter.Feature.PrettyFormat)//fastjson2: 
JSON.toJSONString(jsonStr,SerializerFeature.PrettyFormat)//fastjson: 

//或
JSON.toJSONString(jsonStr,Array[JSONWriter.Feature](): _*))//fastjson2
输出{“empty”:false,“traversableAgain”:true}的问题:

因为直接用scala类,做toJSONString的转化会出问题,要先用asJava转成java类型:

val m2=Map("a"->"1","b"->"2")

println(JSON.toJSONString(m2.asJava, Array[JSONWriter.Feature](): _*))
//输出{"empty":false,"traversableAgain":true}

import collection.JavaConverters._
//转为java类即可
 println(JSON.toJSONString(m2.asJava, Array[JSONWriter.Feature](): _*))
 //输出 {"a":"1","b":"2"}
Scala 使用FastJson:ambigous reference to overloaded definition ScalaShi用FastJson报错:对重载方法的歧义应用的错误 完整的报错信息如下: Error:(24, 28) ambiguous reference to overloaded definition, both method toJSONString in object JSON of type (x$1: Any, x$2: com.alibaba.fastjson.serialize... 阅读详情

相关推荐

Scala中使用JSON.toJSONString报错原因分析-解决方案.docx

Scala中使用JSON.toJSONString报错原因分析-解决方案.docx

JSON.toJSONString报错

例如:JSON.toJSONString(taskList, SerializerFeature.IgnoreErrorGetter))解决办法: 1、在字段上添加注解 @JSONField(serialize =false),这样做不会报错可以顺利打印,但是添加该注解的字段将不会被序列化并放入到json字符串中。经排查发现,报错的原因是因为某个字段的内容在 fastjson 序列化对象时报错导致。通过了解是每一个entity中若是有null字段存在,就会转换异常。

qq_42715450的博客 4129

点云特征提取的实战对比:Voxel-based 与 Pillar-based 在自动驾驶中的表现

本文深入对比了自动驾驶中点云特征提取的两种主流方法:Voxel-based与Pillar-based。Voxel-based方法通过三维体素化保留完整几何信息,检测精度高,但计算消耗大;Pillar-based方法将点云压缩为二维柱状特征图,牺牲部分垂直细节以换取极高的处理速度,更适合实时性要求高的量产场景。文章结合实战数据,为不同算力、精度与工程需求的场景提供了清晰的选型指南。

weixin_29045001的博客 222

解决JSONObject.toJSONString出现地址引用问题$ref

在项目开发过程中,有遇到返回多层的JSON数据出现地址引用;

qq_41814311的博客 3222

三菱CNC数据采集实战:从环境搭建到代码实现的完整指南

本文提供了一份完整的三菱CNC数据采集实战指南,涵盖从开发环境搭建、核心SDK获取、网络配置到基于C#和A2协议的完整代码实现。文章详细解析了初始化、连接管理、数据获取与展示四大核心模块,并分享了错误处理、性能优化及与MES系统集成的关键技巧,帮助工程师快速构建稳定可靠的工业数据采集系统。

wood5的博客 890

手把手拆解DGX GB200 NVL72:1个机柜如何塞进72块GPU?详解NVLink Switch铜缆背板设计

本文深度解析英伟达DGX GB200 NVL72系统如何通过NVLink Switch铜缆背板设计,在标准42U机柜中集成72块B200 GPU,实现1800GB/s的超高带宽。文章详细介绍了模块化架构、铜缆互连技术、液冷散热方案和高密度供电系统等核心创新,为AI算力需求提供突破性解决方案。

red88的博客 1586

解决[ERROR] /Users/jack/book/lightsword/src/main/scala/com/springboot/in/action/filter/LoginFilter.sca

总结一下,解决 [ERROR] /Users/jack/book/lightsword/src/main/scala/com/springboot/in/action/filter/LoginFilter.scala:28: error: ambiguous reference to overloaded definition 错误的关键是明确指定方法调用的参数类型,避免模糊引用。在实际应用场景中,我们可以根据具体的业务需求,对登录过滤器进行定制化的开发,以实现用户登录的控制和管理。

牛肉胡辣汤 445

Prometheus+Grafana部署及企业微信邮件/群消息告警通知配置

本文详细介绍了在Ubuntu 22.04系统上部署普罗米修斯监控系统的完整流程。首先说明了系统配置要求(2核CPU、4G内存、100G硬盘),然后分步骤指导下载、解压和安装普罗米修斯服务。文章包含配置prometheus.yml文件、启动服务、设置系统服务等关键操作,并提供了访问9090端口验证服务的方法。接着介绍了通过node_exporter监控Linux主机的配置过程,包括安装、启动服务和修改普罗米修斯配置文件添加监控项。最后还涉及了mysqld_exporter的部署流程,用于监控MySQL数据库服

m0_58761900的博客 1638

13.10 Scala中使用JSON.toJSONString报错:ambiguous reference to overloaded definition

13.10 Scala中使用JSON.toJSONString报错:ambiguous reference to overloaded definition 问题描述: [ERROR] /Users/jack/book/lightsword/src/main/scala/com/springboot/in/action/filter/LoginFilter.scala:28: error: am

AI天才研究院 1万+

Git GUI学习教程

学习宗旨:快速应用,不易忘记 很遗憾,申请Git的专栏未审批,那我就不再写专栏了,把最近的学习心得写一下,我也是在学习中进行,有任何问题直接留言,回复交流,我还采用思路+实践模式快速过。 目录 1、Git是什么 2、远程仓库 1)GitHub: 2)Gitee(码云): 3、安装Git(Windows) 1)下载 ...

Alexantao 的专栏 7252

深信服aCloud虚拟存储VS3.0实战:从数据分片到仲裁机制的全流程解析

本文深度解析了深信服aCloud虚拟存储VS3.0的核心架构与生产级实践。从数据分片、条带化写入、多副本机制到智能缓存分层,详细阐述了其如何实现高性能与高可靠性的平衡。同时,深入剖析了动态均衡、平滑扩容以及故障恢复与仲裁机制,为运维人员和技术决策者提供了在超融合基础架构(HCI)中部署和管理虚拟存储的实战指南。

net55的博客 588

使用scala使用fastjson将map转json报错

报错内容 Error:(87, 13) ambiguous reference to overloaded definition, both method toJSONString in object JSON of type (x$1: Any, x$2: com.alibaba.fastjson.serializer.SerializerFeature*)String and method toJSONString in object JSON of type (x$1: Any)String mat

weixin_43015677的博客 1541

YOLOv8改进 | 注意力篇 | YOLOv8引入EMAttention(EMA)注意力

具体来说,除了对全局信息进行编码以重新校准每个并行分支中的通道权重之外,还通过跨维度交互来进一步聚合两个并行分支的输出特征,以捕获像素级的成对关系。3. 跨空间学习:除了在每个并行子网络中建立局部的跨通道交互外,EMA模块还通过跨空间学习方法融合了两个并行子网络的输出特征图。到此本文的正式分享内容就结束了,在这里给大家推荐我的YOLOv8改进有效涨点专栏,后期我会根据各种最新的前沿顶会进行论文复现,也会对一些老的改进机制进行补充,如果大家觉得本文帮助到你了,订阅本专栏,关注后续更多的更新~

tsg6698的博客 896

ambiguous reference to overloaded definition(scala与java重载逻辑不匹配)

1.问题 Error:(108, 47) ambiguous reference to overloaded definition, both method toJSONString in object JSON of type (x$1: Any, x$2: com.alibaba.fastjson.serializer.SerializerFeature*)String and metho...

九师兄 7834

5步上手Quartz.NetUI:.NET Core定时任务的开箱即用解决方案

Quartz.NetUI是一个基于.NET Core + Quartz.NET + Vue + IView的开箱即用的定时任务UI解决方案。它结合了Quartz.NET的强大功能和Vue.js的易用性,提供了一个不依赖数据库、只需在界面进行简单配置即可使用的定时任务管理系统。通过上述步骤,你已经学会了如何使用Quartz.NetUI在.NET Core项目中实现定时任务。Quartz.NetUI不仅功能强大,而且使用简单,非常适合那些需要快速实现定时任务管理的开发者。

java专栏 2407

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

mysql json javabean_使用FastJson对JSON字符串、JSON对象及JavaBean之间的相互转换

maven依赖包:1 2 3 com.alibaba4 fastjson5 1.2.476 一、FastJson是用于java后台处理json格式数据的一个工具包,包括“序列化”和“反序列化”两部分,它具备如下特征:(1)速度最快,测试表明,fastjson具有极快的性能,超越任其他的java json parser。(2)功能强大,完全支持java bean、集合、Map...

weixin_35779093的博客 692

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

scala错误ambiguous reference to overloaded definition

val jsonString = JSON.toJSONString(mapParam) 会报错ambiguous reference to overloaded definition, 直接改成 val jsonString = JSON.toJSON(mapParam).toString 就好了

别说话写代码的博客 2577

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

fastjson--JSON.toJSONString(OBJ) 报错

     这两天在写用jQuery简化Ajax的时候,使用json来传输数据,老师推荐用阿里爸爸的fastjson,说官方提供的都是坑,于是乎我便down下来,开始了苦逼的一晚。 String json_str = JSON.toJSONString(account); 这句话一直报错,我以为是我的问题,反复找啊找,csdn看了一遍又一遍,最后...

懒羊羊的快乐小屋 3413

scala 调用fastjson 的toJSONString() 报错

可变参数需要慎用,不然scala 调用的时候会出现以下问题。 Error:(29, 31) ambiguous reference to overloaded definition, both method toJSONString in object JSON of type (x$1: Any, x$2: com.alibaba.fastjson.serializer.Serialize...

一杯派蒙的博客 4524

关于JSON.toJSONString()报红问题

import com.alibaba.fastjson.JSON; 上述为需要导入的jar包

D_Boat的博客 1125

JSON.toJSONString()返回{}原因

JSON.toJSONString()返回{}原因

jiankangfuzu的博客 792

JsonUtil.toJsonStr(Object obj)序列化失效(缺少字段)与JsonUtil.toBean(String s,Class<T> beanClass)反序列化报错的问题

JsonUtil.toJsonStr(Object obj)序列化失效(缺少字段)与JsonUtil.toBean(String s,Class beanClass)反序列化报错的问题

qq_61267719的博客 2694

JSON.toJSONString(joinPoint.getArgs())报错getOutputStream() has already been called for this response

nested exception is java.lang.IllegalStateException: It is illegal to call this method if the current request is not in asynchronous mode (i.e. isAsyncStarted() returns false)] with root cause privat...

hikoukay的博客 2786

com.alibaba.fastjson.JSONException: toJSON error的原因

com.alibaba.fastjson.JSONException: toJSON error的原因

qq_43955390的博客 4030

记一次JSON.toJSONString()转换时非属性方法空指针异常排查及toJSONString保留null值属性

就是规范命名,与类属性无关的方法不要以get/is开头,向我这个类里面getRealName只是将name进行了处理,并不是作为一个类属性使用,所以我们将该方法改成handleRealName()或者其他即可。它会把所有符合以get开头的方法拿出来然后把它转成属性进行设置,所有他会在转method02方法的时候调用了getRealName()方法,而method02方法中name并没有设置值,所有才出现了空指针异常。我们还会发现为空的属性,toJSONStirng的时候不打印。不过建议还是规范命名。

低调D树苗的博客 1425
上一篇: org.json4s.MappingException: Classes defined in method bodies are not supported.
下一篇: Scala中解析json工具对比
Code_LT
博客等级 码龄10年 307粉丝 182原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值