专栏首页关忆北.jackson第二篇

jackson第二篇

一、从URL读取JSON数据

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

@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中

Map postDTO = mapper.readValue(url, Map.class);

二、忽略某个字段

  • @JsonIgnore
public class  { 
  public int value; 
  @JsonIgnore
  public int internalValue; 
}
  • disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
//返回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对象

public class MyEmptyObject {
  private Integer i;  //没有get set方法
}

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

@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);

}

四、日期格式化

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")
本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!
本文分享自作者个人站点/博客:https://blog.csdn.net/weixin_42313773复制
如有侵权,请联系 cloudcommunity@tencent.com 删除。
登录 后参与评论
0 条评论

相关文章

  • jackson学习之二:jackson-core

    创建名为jacksondemo的maven工程,这是个父子结构的工程,其pom.xml内容如下:

    程序员欣宸
  • Jackson 配置

    Thoughtworks-杨焱
  • Jackson笔记

    Jackson 是当前用的比较广泛的,用来序列化和反序列化 json 的 Java 的开源框架。Jackson 社 区相对比较活跃,更新速度也比较快, 从 Gi...

    Remember_Ray
  • Jackson 使用

    老版本的 Jackson 使用的包名为 org.codehaus.jackson,而新版本使用的是com.fasterxml.jackson。

    acc8226
  • Jackson用法详解

    Jackson 是当前用的比较广泛的,用来序列化和反序列化 json 的 Java 的开源框架。Jackson 社区相对比较活跃,更新速度也比较快, 从 Git...

    三分恶
  • Jackson快速入门

    Java生态圈中有很多处理JSON和XML格式化的类库,Jackson是其中比较著名的一个。虽然JDK自带了XML处理类库,但是相对来说比较低级,使用本文介绍的...

    乐百川
  • Jackson问题汇总

    常见的json框架有:Jackson,FasJson(阿里的,万年没更新,积累了大量issue),Gson(谷歌的)。其中Jackson效率最高,性能最好,最为...

    雨临Lewis
  • Jackson 常用注解

    通过 @JacksonInject 注解可以在 Jackson 反序列化的时候为空值字段动态赋值,当反序列化的对应属性值不存在时,可通过该注解为其动态设置值。

    BUG弄潮儿
  • jackson的注解

    构造一个java对象,这个class在java内存中就是一个你想处理的对象。当然这个对象也需要存在redis,等待下次定时事件或者其他消费事件处理。另外这个对象...

    mariolu
  • 放弃fastjson,拥抱Jackson

    最近由于阿里的fastjson频繁爆出安全漏洞,为了避免后续升级上线的烦恼,决定弃用fastjson,使用Jackson,把现有项目中的fastjson都换成了...

    大数据技术与应用实战
  • MessagePack Jackson 数据大小

    我们在使用 MessagePack 对 List 对象数据进行序列化的时候,发现序列化以后的二进制数组数据偏大的情况。

    HoneyMoose
  • Caused by: com.fasterxml.jackson.databind.JsonMappingException: Incompatible Jackson version: 2.9.6

    问题在于spark目前使用的Jackson是2.6+,而storm-kafka-client和kafka使用的是2.9+,两者之间gradle默认使用最新的依赖...

    王小雷
  • MessagePack Jackson 数据大小

    我们在使用 MessagePack 对 List 对象数据进行序列化的时候,发现序列化以后的二进制数组数据偏大的情况。

    HoneyMoose
  • 【json】Jackson的使用

    首先定义一个实例: ObjectMapper mapper = new ObjectMapper();

    全栈程序员站长
  • jackson error 含义log

    1. 反序列化失败,类型不匹配 Caused by: com.fasterxml.jackson.databind.JsonMappingException: ...

    Ryan-Miao
  • Fastjson与Jackson性能问题

    话说在前面,本篇并不会去比较fastjson与Jackson在正常业务场景下的json解析性能,侧重点是比较两者在解析大json字符串上的性能。可以给出的结论是...

    Java艺术
  • springboot通过javaconfig配置jackson

    路过君
  • Json的FastJson与Jackson

    JSON协议使用方便,越来越流行,JSON的处理器有很多,这里我介绍一下FastJson,FastJson是阿里的开源框架,被不少企业使用,是一个极其优秀的Js...

    全栈程序员站长
  • Java Jackson 中的 mapper

    在我们在 Java 程序创建的时候,如果需要处理 Jackson,我们可能会用到下面一句话。

    HoneyMoose

扫码关注腾讯云开发者

领取腾讯云代金券