json 简单使用

(方便自己用)

Jackson

Jackson将对象转为json字符串

        ObjectMapper mapper = new ObjectMapper().findAndRegisterModules();
        Book book = new Book();
        book.setId(1);
        book.setPublisher("北京");
        book.setNownum(22);
        book.setCreatetime(new Timestamp(System.currentTimeMillis()));
        book.setAuthor("jack");

        List<Book> list = new ArrayList<>();
        list.add(book);

        Map map = new ConcurrentHashMap();
        map.put( "name", "json" );
        map.put( "bool", Boolean.TRUE );
        map.put( "int", new Integer(1) );
        map.put( "arr", new String[]{"a","b"} );
        map.put( "func", "func2" );
        map.put( "book", book );

        String json = mapper.writeValueAsString(list);
        System.out.println(json);
// .findAndRegisterModules();当有时间时,需要加上这个
// 时间属性 需要加上注解 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "Asia/Shanghai")
// 当需要属性被忽略时 需要注解 @JsonIgnore

Jackson将json字符串转为对象

        String json = "{\"id\":1,\"author\":\"jack\",\"publisher\":\"北京\",\"nownum\":22,\"createtime\":\"2023-10-10 14:42:56\"}";
        ObjectMapper mapper = new ObjectMapper().findAndRegisterModules();
        Book book = mapper.readValue(json, Book.class);
//        System.out.println(book);

        String jsonMap = "{\"arr\":[\"a\",\"b\"],\"bool\":true,\"func\":\"func2\",\"book\":{\"id\":1,\"author\":\"jack\",\"publisher\":\"北京\",\"nownum\":22,\"createtime\":\"2023-10-10 14:47:56\"},\"name\":\"json\",\"int\":1}";
        Map map = mapper.readValue(jsonMap, new TypeReference<Map<String,Object>>() {});
//        System.out.println(map);

        String jsonList = "[{\"id\":1,\"author\":\"jack\",\"publisher\":\"北京\",\"nownum\":22,\"createtime\":\"2023-10-10 15:00:21\"}]";
        List<Book> list = mapper.readValue(jsonList, new TypeReference<List<Book>>() {
        });
//        System.out.println(list);
        String jsonArray = "[{\"xxx\":\"yyy\",\"bookname\":\"三国\",\"author\":\"罗贯中\",\"date\":\"2023年10月09日 17时09分20秒\",\"localDateTime\":\"2023-10-09 17:09:20\"}]";

        //忽略字段设置
        mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
        Book[] books = mapper.readValue(jsonArray, Book[].class);
        for (Book book1 : books) {
            System.out.println(book1);
        }
//        System.out.println(books);
// 当json字符串内有这个属性,实体类里没有这个属性需要使用这个,进行忽略
// mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

FastJson

FastJson将对象转为字符串

        Book book = new Book();
        book.setId(1);
        book.setPublisher("北京");
        book.setNownum(22);
        book.setCreatetime(new Timestamp(System.currentTimeMillis()));
        book.setAuthor("jack");

        List<Book> list = new ArrayList<>();
        list.add(book);

        Map map = new ConcurrentHashMap();
        map.put( "name", "json" );
        map.put( "bool", Boolean.TRUE );
        map.put( "int", new Integer(1) );
        map.put( "arr", new String[]{"a","b"} );
        map.put( "func", "func2" );
        map.put( "book", book );
        String jsonString = JSONObject.toJSONString(book);
        System.out.println(jsonString);
// 时间属性需要 @JSONField(format = "yyyy-MM-dd HH:mm:ss")
// 当需要属性被忽略时
// deserialize = false 不开启反序列化(json反序列化)
// serialize = false 不开启序列化(json序列化)
// @JSONField(deserialize = false,serialize = false)

FastJson将json字符串转为对象

        String json = "{\"id\":1,\"author\":\"jack\",\"publisher\":\"北京\",\"nownum\":22,\"createtime\":\"2023-10-10 14:42:56\"}";
        Book book = JSONObject.parseObject(json, Book.class);
        System.out.println(book);


        String jsonArray = "[{\"xxx\":\"yyy\",\"bookname\":\"三国\",\"author\":\"罗贯中\",\"date\":\"2023年10月09日 17时09分20秒\",\"localDateTime\":\"2023-10-09 17:09:20\"}]";
        Book[] books1 = JSONObject.parseObject(jsonArray, Book[].class);
        for (Book book1 : books1) {
            System.out.println(book1);
        }
        String jsonList = "[{\"id\":1,\"author\":\"jack\",\"publisher\":\"北京\",\"nownum\":22,\"createtime\":\"2023-10-10 15:00:21\"}]";
        List<Book> list = JSONObject.parseObject(jsonList, new TypeReference<List<Book>>() {
        });
        System.out.println(list);
// TypeReference注意使用
/*@JSONField(format = "yyyy-MM-dd HH:mm:ss") 注解主要用于指定在将 Java 对象序列化为 JSON 时的日期格式,而不是在将 JSON 转换为 Java 对象时。这个注解在对象反序列化时通常不会生效,因为 JSON 字符串已经包含了日期信息,而不需要进一步的格式化。*/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值