fastjson2 toJavaObject问题汇总
无法将jsonObject中的long转换为LocalDate/LocalDateTime
User user = User.builder()
.id(1L)
.name("测试")
.age(1)
.balance(BigDecimal.valueOf(100.1D))
.birthday(LocalDate.now())
.touchTime(LocalDateTime.now())
.build();
String jsonString = JSONObject.toJSONString(user);
JSONObject jsonObject = JSONObject.parseObject(jsonString);
//SUCCESS
User newUser1 = JSONObject.parseObject(jsonString, User.class);
//ERROR
User newUser2 = jsonObject.toJavaObject(User.class);
出现 com.alibaba.fastjson2.JSONException: not support input ZWMtZnVuZDpwYXlvdXQtYmlsbC11cHNlcnRlZA==, offset 57, character
JSONObject jsonObject = JSONObject.parseObject(s);
RetryClient.RetryEventWrapper retryEventWrapper = jsonObject.toJavaObject(RetryClient.RetryEventWrapper.class);
其中RetryEventWrapper对象比较复杂 @Data @Builder @NoArgsConstructor @AllArgsConstructor class RetryEventWrapper { Event event; EventConsumer.Context context; }
原提问者GitHub用户threebody1379
加上这个 JSONReader.Feature.Base64StringAsByteArray 试试看
@Test
public void test() {
String base64Str = "ZWMtZnVuZDpwYXlvdXQtYmlsbC11cHNlcnRlZA==";
JSONObject object = JSONObject.of("value", base64Str);
Bean bean = object.toJavaObject(Bean.class, JSONReader.Feature.Base64StringAsByteArray);
assertArrayEquals(Base64.getDecoder().decode(base64Str), bean.value);
}
public static class Bean {
public byte[] value;
}
原回答者GitHub用户wenshao
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。