首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JsonMapping异常不能构造实例

JsonMapping异常不能构造实例
EN

Stack Overflow用户
提问于 2018-01-18 19:47:59
回答 1查看 3K关注 0票数 1

我有一节课:

代码语言:javascript
复制
@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时

代码语言:javascript
复制
{"multiplicationFactor" : 3, "additionFactor" : 1, "heuristicValue" : 3}

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

com.fasterxml.jackson.databind.JsonMappingException:无法构造com.medianet.rtb.mowgli.commons.dto.adexchange.FloorPriceData:的实例-参数构造函数/工厂方法从字符串值反序列化({“multiplicationFactor”:3,"additionFactor“:1,"heuristicValue”:3})

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-18 19:54:35

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

代码语言:javascript
复制
System.out.println(Utils.getMapper().readValue(a, FloorPriceData.class));

它将生成一个输出:

代码语言:javascript
复制
FloorPriceData(multiplicationFactor=3.0, additionFactor=1.0, heuristicValue=3)

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

代码语言:javascript
复制
Utils.getMapper().convertValue(a, FloorPriceData.class)

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

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

在这种情况下,需要:

代码语言:javascript
复制
{"multiplicationFactor" : 3, "additionFactor" : 1, "heuristicValue" : 3}

并将其序列化为:

代码语言:javascript
复制
"{\"multiplicationFactor\" : 3, \"additionFactor\" : 1, \"heuristicValue\" : 3}"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48329206

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档