当前位置: 首页 > 知识库问答 >
问题:

JsonMap异常无法构造实例

井逸明
2023-03-14

我有一个以下类:

@Data
@NoArgsConstructor
public class FloorPriceData {
  Double multiplicationFactor;
  Double additionFactor;
  Integer heuristicValue;

  public static void main(String[] args) {
    String a = "{\"multiplicationFactor\" : 3, \"additionFactor\" : 1, \"heuristicValue\" : 3}";
    System.out.println(Utils.getMapper().convertValue(a, FloorPriceData.class));
  }
}

当我尝试转换JSON时

{"multiplicationFactor" : 3, "additionFactor" : 1, "heuristicValue" : 3}

对于这个类实例,我得到以下异常:

获取原因:com . faster XML . Jackson . databind . jsonmappingexception:无法构造com . medianet . rtb . mogli . commons . dto . ad exchange . floor price data的实例:没有字符串参数构造函数/工厂方法来从字符串值反序列化({"multiplicationFactor" : 3," additionFactor" : 1," heuristicValue" : 3} ')

共有1个答案

锺离烈
2023-03-14

在这种情况下,你应该使用ObjectMapper.readValue(String json, Class

System.out.println(Utils.getMapper().readValue(a, FloorPriceData.class));

它将生成一个输出:

FloorPriceData(multiplicationFactor=3.0, additionFactor=1.0, heuristicValue=3)

当您尝试将 JSON 反序列化为对象时

Utils.getMapper().convertValue(a, FloorPriceData.class)

它失败了,因为convertValue首先序列化给定的值,然后再次反序列化它:

此功能等效于首先将给定值序列化为 JSON,然后将 JSON 数据绑定到给定类型的值,但可以在不完全序列化为 JSON 的情况下执行。

在这种情况下,它需要:

{"multiplicationFactor" : 3, "additionFactor" : 1, "heuristicValue" : 3}

并将其序列化为:

"{\"multiplicationFactor\" : 3, \"additionFactor\" : 1, \"heuristicValue\" : 3}"

 类似资料:
  • -----------这是我的文件服务---------------------我使用的是spring boot 2.2.2 -------这是我的文件控制器-------- 进程已完成,退出代码为%1

  • 问题内容: 我正在尝试从Oracle网站[fxml教程](http://docs.oracle.com/javase/8/javafx/get-started- tutorial/fxml_tutorial.htm )上的JavaFX教程。 这是我不断得到的例外。该应用程序未显示在屏幕上。我从另一个堆栈溢出答案中完成了非args Main()构造函数,但没有解决。 问题答案: 缺少初始关键字。 也

  • 我正在使用Jackson,我遇到了问题,当我尝试反序列化一个对象时,我得到了以下错误: 我在属性上有问题: 有人能帮我吗?

  • 我已经为graphqlapi(springboot2、graphqlsspringbootstarter、GraphiQL)建立了一个工作设置。 然后,我尝试引入由graphql java扩展标量库提供的自定义标量(在本例中,是类型为java.time.LocalDate的成员的DateScalar): 我在模式中声明了自定义标量和类型, 我提供了作为Springbean(否则服务器无法启动):

  • 问题内容: 在C ++中,对象的生命周期从构造函数成功完成时开始。在构造函数内部,该对象尚不存在。 问:从构造函数发出异常是什么意思? 答:这意味着构造已失败,该物体从未存在,其寿命从未开始。[ 来源 ] 我的问题是:Java是否同样适用?例如,如果我移交给另一个对象,然后构造函数失败,会发生什么情况? 这个定义明确吗?现在是否有对非对象的引用? 问题答案: 该对象存在,但未正确初始化。 每当构造

  • 问题内容: 我正在使用Jackson,但遇到问题,当我尝试反序列化对象时,出现以下错误: 我在属性中遇到问题: 有人可以帮我吗? 问题答案: 您不能实例化一个抽象类,杰克逊也不能。您应该为Jackson提供有关如何使用具体类型实例化MyAbstractClass的信息。