微服务中从其他服务获取过来的对象,本来传的是实体类对象 , 但是接受到的参数却是linkedhashMap类型的对象 , 如果强转成自定义的实体类型会报错,因此可以利用ObjectMapper转换。

ObjectMapper mapper = new ObjectMapper();
DefaultResponse defaultResponse = proxy.getData();
List<Resource> resources = (<Resource>) defaultResponse.getData();  //这里的场景是:data是一个Object类型的,但是它其实是一个List<Resouce>,想把List中的每个对象分别转成可用的对象
for (int i = 0; i < serviceDateResources.size(); i++) {Resource resource = mapper.convertValue(resources.get(i), Resource.class);   //经过这步处理,resource就是可用的类型了,如果不转化会报错
}

上面转换的过程中,如果返回的字段你不是都需要,需要忽略其中的几个字段,在自定义的类中添加如下:

 import org.codehaus.jackson.annotate.JsonIgnoreProperties;@JsonIgnoreProperties(ignoreUnknown = true)public class Resource {//  private Integer orderId; //提供有这个参数,但是不想获取private Integer otrerFiled;}

或者下面方法:这两种方法不用添加注解

一:ObjectMapper mapper = new ObjectMapper().setVisibility(JsonMethod.FIELD,Visibility.ANY);mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
二:ObjectMapper objectMapper = new ObjectMapper();mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

ObjectMapper可以实现对象到json等其他格式的互转。如果向将java对象转成Json格式,可以用:

ObjectMapper mapper = new ObjectMapper();
mapper.writeValueAsString(object);

会有JsonProcessingException异常,需要自己处理。在转换的过程中,有可能有的属性被设成空就不序列化等的需求,可以在类的属性上或直接在类上加上一下注解。用在属性上就是只针对一个属性,用在类上就是针对类里的所有属性。

@JsonInclude(Include.NON_NULL)
@JsonInclude(Include.Include.ALWAYS) 默认
@JsonInclude(Include.NON_DEFAULT) 属性为默认值不序列化
@JsonInclude(Include.NON_EMPTY) 属性为 空(“”) 或者为 NULL 都不序列化
@JsonInclude(Include.NON_NULL) 属性为NULL 不序列化

json转成Object 及 Object转json

DefaultResponse  response = mapper.readValue(result, DefaultResponse.class); 
String Json =  mapper.writeValueAsString(student1);

mapper.readValue()过程中,如果result中的字段比DefaultResponse字段多会报错,忽略多余的字段在DefaultResponse中添加下面注解。

@JsonIgnoreProperties(ignoreUnknown = true)

转载:https://www.cnblogs.com/badboyf/p/6126511.html

将远程服务器获取的linkedhashMap对象转为实体类对象相关推荐

  1. JSON对象转为Java类对象

    本文讲述两种方法,使JSON对象转为Java类对象.基于FastJson1 对于以下的JSON对象: {"message": "成功","code&q ...

  2. Datatable转为ListT / DataRow转为实体类对象

    using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.R ...

  3. JSON字符串转为指定实体类对象

    创建JsonStringToClass对象即可 package utils;import net.sf.json.JSONArray; import net.sf.json.JSONObject;im ...

  4. java获取实体类对象_java 获取实体类对象属性值的方法

    在java中我们要获得实体类对象的属性,一般情况是将实体类中的属性私有化,然后再对外提供get()与set()方法,然后再获取实体类对象的属性的时候先把对象new出来,再用变量名.get()的方法得到 ...

  5. vue将二维数组对象转为一维数组对象

    title: [{id: 1, name: '财会经济',children: [{id: 11, name: '初级会计'},{id: 12, name: '初级会计'}]},{id: 2, name ...

  6. Map对象与实体类Object对象转换

    方法一 fastjson 转换 <dependency><groupId>com.alibaba</groupId><artifactId>fastjs ...

  7. C#中怎样连接数据库并将查询结果转为实体类以及如何加入事务

    场景 新建一个程序,需要对数据的表进行查询并将查询结果转换为实体类,然后将多个实体类 再插入到另一个数据库的表中,执行插入的过程中要使用事务. 注: 博客主页: https://blog.csdn.n ...

  8. C#中IEnumerableT.Distinct()将指定实体类对象用Lambda表达式实现多条件去重

    背景说明 在EF等ORM框架中需要以List实体类的方式对数据进行大量操作,其中免不了对一些数据进行去重复,而C#中IEnumerable.Distinct()便提供了这一功能.只是对刚开始接触的新人 ...

  9. Java 判断实体类对象的全部属性是否空

    代码: public boolean checkObjAllFieldsIsNull(Object object) {// 如果对象为null直接返回trueif (null == object) { ...

最新文章

  1. 每天只睡4小时!大佬们都这么拼吗?
  2. html显示隐藏密码,Web前端,登录密码显示隐藏眼睛
  3. javascript(arguments)
  4. JavaWeb图书管理系统day01
  5. 手写 new 操作符
  6. Java计算机毕业设计电脑小白网站源码+系统+数据库+lw文档
  7. 如何用php开发oa系统,oa系统怎么使用
  8. Vivado官网下载
  9. 载波与载波频率,中心频率的解释
  10. 论文解读:Decoupled Knowledge Distillation
  11. 8583协议深入理解 1
  12. Smartforms 总计小计
  13. 网站运营活动策划方案模板[转载]
  14. DELPHI关于汉字转拼音的一些想法
  15. 没有投屏标志怎么投屏_没有TV投屏标示,手机电脑电视该如何实现投屏
  16. php 课程设计总结心得体会,课程设计心得体会
  17. 计算机大赛指导老师自评怎么写,计算机*学生的简单自我评价
  18. Reso | mysql、SQLServer、Oracle的区别
  19. 创成汇:科技与艺术概念结合在手机上,效果居然这么强?_创成汇
  20. Docker学习(六):docker compose容器编排

热门文章

  1. #论文 《ImageNet Classification with Deep Convolutional Neural Networks》
  2. 【c#】关于c#中data控件的简单用法介绍
  3. QQ会员亿级Web系统的容错性建设实践--转
  4. 热点推荐:秒杀系统架构分析与实战--转载
  5. 2015!我来了,你在哪里?今年第一篇
  6. rsync+inotify实现实时同步案例--转
  7. 数学建模学习笔记——聚类模型
  8. 【待继续研究】如何运用机器学习技术构建可行的反欺诈检测方案?
  9. MapReduce示例——WordCount(统计单词)
  10. Deep Learning的基础概念