运行以下行时:
Request<Map<String, Object>> requestMap = JsonUtils.fromJson(eventContext.getMessage().getPayloadAsString(), Request.class);
我得到了这个Java异常:
Root Exception stack trace:
org.codehaus.jackson.map.JsonMappingException: Can not instantiate value of type [simple type, class ***.objectmodel.Request] from JSON floating-point number; no one-double/Double-arg constructor/factory method
答案 0 :(得分:1)
对我来说,您试图将 String (JSON)转换为Request,但是您没有指定要尝试解析的Request(通用参数)类型。
我会尝试将JSON提取到 Map 中,如下所示:
Map<String, Object> actual = JsonUtil.fromJson(encoded, new TypeReference<Map<String, Object>>(){});
一旦你收到一个JSON并希望反序列化它,我相信它有信息,你必须创建一个特定的实体来映射它,然后它会是这样的:
Map<String, YourEntity> actual = JsonUtil.fromJson(encoded, new TypeReference<Map<String, YourEntity>>(){});
有关此解决方案的更多详细信息,请参阅here。
答案 1 :(得分:0)
我在调试时发现了问题。 JSON字符串实际上不是JSON(特别是一个IP地址字符串“192.168.1.1”。所以它不是目标类的反序列化映射问题(正如我原先假设的那样)。
寓言的道德:例外太复杂了。 “不是JSON字符串”就足够了。