首页 > 其他分享 >jackson快速小结

jackson快速小结

时间:2022-12-02 11:39:26浏览次数:45  
标签:mapper jackson name 快速 json mkyong 小结 class Staff


1 对象转换为json

ObjectMapper mapper = new ObjectMapper();
Staff obj = new Staff();


mapper.writeValue(new File("c:\\file.json"), obj);


String jsonInString = mapper.writeValueAsString(obj);



2 json转换为object


ObjectMapper mapper = new ObjectMapper();
String jsonInString = "{'name' : 'mkyong'}";

//JSON from file to Object
Staff obj = mapper.readValue(new File("c:\\file.json"), Staff.class);

//JSON from URL to Object
Staff obj = mapper.readValue(new URL("http://mkyong.com/api/staff.json"), Staff.class);

//JSON from String to Object
Staff obj = mapper.readValue(jsonInString, Staff.class);




3 格式化输出


// Convert object to JSON string and pretty print
jsonInString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(staff);
System.out.println(jsonInString);



{


"name" : "mkyong",


"age" : 33,


"position" : "Developer",


"salary" : 7500,


"skills" : [ "java", "python" ]


}



4 使用@JsonView, 控制哪些字段输出


先定义view


public class Views {

public static class Normal{};

public static class Manager extends Normal{};

}



对于normal的,是看不到薪酬,如果经理,则看到


public class Staff {

@JsonView(Views.Normal.class)
private String name;

@JsonView(Views.Normal.class)
private int age;

@JsonView(Views.Normal.class)
private String position;

@JsonView(Views.Manager.class)
private BigDecimal salary;

@JsonView(Views.Normal.class)
private List<String> skills;


则:


// Salary will be hidden
System.out.println("Normal View");
String normalView = mapper.writerWithView(Views.Normal.class).writeValueAsString(staff);
System.out.println(normalView);

String jsonInString = "{\"name\":\"mkyong\",\"age\":33,\"position\":\"Developer\",\"salary\":7500,\"skills\":[\"java\",\"python\"]}";
Staff normalStaff = mapper.readerWithView(Views.Normal.class).forType(Staff.class).readValue(jsonInString);
System.out.println(normalStaff);

// Display everything
System.out.println("\nManager View");
String managerView = mapper.writerWithView(Views.Manager.class).writeValueAsString(staff);
System.out.println(managerView);

Staff managerStaff = mapper.readerWithView(Views.Manager.class).forType(Staff.class).readValue(jsonInString);
System.out.println(managerStaff);



输出:


Normal View


{"name":"mkyong","age":33,"position":"Developer","skills":["java","python"]}


Staff [name=mkyong, age=33, position=Developer, salary=null, skills=[java, python]]



Manager View


{"name":"mkyong","age":33,"position":"Developer","salary":7500,"skills":["java","python"]}


Staff [name=mkyong, age=33, position=Developer, salary=7500, skills=[java, python]]




5 常见问题


json转变为数组


String json = "[{\"name\":\"mkyong\"}, {\"name\":\"laplap\"}]";


List<Staff> list = mapper.readValue(json, new TypeReference<List<Staff>>(){});


把json转变为map


String json = "{\"name\":\"mkyong\", \"age\":33}";


Map<String, Object> map = mapper.readValue(json, new TypeReference<Map<String,Object>>(){});


标签:mapper,jackson,name,快速,json,mkyong,小结,class,Staff
From: https://blog.51cto.com/u_14230175/5906739

相关文章

  • android中的menu和子menu小结
    menu.xml<?xmlversion="1.0"encoding="utf-8"?><menuxmlns:android="http://schemas.android.com/apk/res/android"><itemandroid:id="@+id/Menu1"android:tit......
  • 挂载文件系统选项nodiratime、noatime等集合小结
    Linux系统文件有三个主要的时间属性,分别是ctime(changetime),atime(accesstime),mtime(modifytime)。这三个时间很容易混淆,准备深入了解Linux的......
  • jquery中$.each小结
    在jquery中,$each的用法比较常见,下面小结下1)基本用法//ARRAYSvararr=['one','two','three','four','five'];$.each(arr,funct......
  • pidstat监控工具小结
    pidstat 是著名的采集软件systat的组件之一。安装用yuminstall  就可以了。1)pidstat  结果分析  %usr-当在用户层执行(应用程序)时这个任务的cpu使用率,和ni......
  • struts2 中的拦截器例子快速进阶
    小结了struts2中拦截器的一个例子,以方便快速进阶的.比如有个很典型的例子,要求在编辑数据或者增加数据前,必须要先判断用户是否登陆.则我们先在src目录下,建一个包strut......
  • FTP两种传输模式小结
    FTP是有两种传输的模式的,主动模式和被动模式,之前一直没怎么去搞明白之,现在找了下资料,重新整理了下: 一个完整的FTP文件传输需要建立两种类型的连......
  • ATLAS拖拉之简单小结
    有了atlas的话,做一些随意拖拉的效果就十分容易了。在vs.net2005下,装了atlas的话,有很多控件可以实现之,下面小结之1、使用<atlas:DragOverlayProperties>控件,比如 <atlas:S......
  • 快速小结:CSS3盒模型
    ......
  • javascript中generator快速小结
    1基本例子  function*generatorFunc(){console.log("任务一");yield1;console.log("任务二");yield*generatorSubFunc();console.log("任务三");return......
  • 收藏:LINUX中的重要IO指标小结
    源自极客时间的教程:1、使用率,是指磁盘处理I/O的时间百分比。过高的使用率(比如超过80%),通常意味着磁盘I/O存在性能瓶颈。2、饱和度,是指磁盘处理I/O的繁忙程度。过高的饱......