前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >jackson第二篇

jackson第二篇

作者头像
关忆北.
发布2020-10-15 16:04:43
5020
发布2020-10-15 16:04:43
举报
文章被收录于专栏:关忆北.

一、从URL读取JSON数据

请求远程的API,获得远程服务的JSON响应结果,并将其转换为Java POJO对象。

代码语言:javascript
复制
@Test
void testURL() throws IOException {

  URL url = new URL("https://jsonplaceholder.typicode.com/posts/1"); //远程服务URL
  ObjectMapper mapper = new ObjectMapper();
  //从URL获取JSON响应数据,并反序列化为java 对象
  PostDTO postDTO = mapper.readValue(url, PostDTO.class); 

  System.out.println(postDTO);

}

注:如果不知道具体的反序列化对象是什么样的,可以把数据存到map中

代码语言:javascript
复制
Map postDTO = mapper.readValue(url, Map.class);

二、忽略某个字段

  • @JsonIgnore
代码语言:javascript
复制
public class  { 
  public int value; 
  @JsonIgnore
  public int internalValue; 
}
  • disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
代码语言:javascript
复制
//返回JSON格式的数据忽略某个字段(对应的实体中没有对应字段)

@Data
public class PlayerStar {
    @JsonProperty("playerName")
    private String name;
    private Integer age;
    private String[] hobbies;    //业余爱好,数组
    private List<String> friends;   //  朋友
    private Map<String, BigDecimal> salary; //年收入 Map
}



@Data
public class PlayerStar2 {
    @JsonProperty("playerName")
    private String name;
//    private Integer age;
    private String[] hobbies;    //业余爱好,数组
    private List<String> friends;   //  朋友
    private Map<String, BigDecimal> salary; //年收入 Map
}


@Test
    public void testUnKnowProperties() throws IOException {
        ObjectMapper mapper = new ObjectMapper();
        PlayerStar player = PlayerStar.getInstance();

        //将PlayerStar序列化为对象
        String valueAsString = mapper.writeValueAsString(player);
        log.info(valueAsString);

        //报错:JSON字符串所包含的属性,多余的Java类的定义(多出一个阿年龄,赋值时找不到setAge方法)
        //忽略掉age属性,不接受我们的java类未定义的成员变量数据
        mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
        PlayerStar2 playerStar2 = mapper.readValue(valueAsString, PlayerStar2.class);
        log.info(playerStar2.toString());
    }

三、未赋值Java Bean序列化

如果某些类的数据可能为空,我们通常也不会为它赋值。但是客户端就是需要这个{}的JSON对象

代码语言:javascript
复制
public class MyEmptyObject {
  private Integer i;  //没有get set方法
}

可以为ObjectMapper设置disable序列化特性:FAIL_ON_EMPTY_BEANS,也就是允许对象的所有属性均未赋值。

代码语言:javascript
复制
@Test
void testEmpty() throws IOException {

  ObjectMapper mapper = new ObjectMapper();
  mapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS);

  String jsonString = mapper.writeValueAsString(new MyEmptyObject());
  System.out.println(jsonString);

}

四、日期格式化

代码语言:javascript
复制
ObjectMapper mapper = new ObjectMapper();
mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);  //注意这里
mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd"));  //注意这里
Map temp = new HashMap();
temp.put("now", new Date());

String s = mapper.writeValueAsString(temp);
System.out.println(s);


还可以使用注解:@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/10/08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、从URL读取JSON数据
  • 二、忽略某个字段
  • 三、未赋值Java Bean序列化
  • 四、日期格式化
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档