开发者社区> 问答> 正文

fastjson2 toJavaObject有一些问题,该如何解决呢

fastjson2 toJavaObject问题汇总

  1. 无法将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);
    
  2. 出现 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

展开
收起
白夜行fighting 2023-04-21 10:53:22 377 0
1 条回答
写回答
取消 提交回答
  • 加上这个 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

    2023-04-21 13:52:01
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载