如何用ObjectMapper将复杂Map转换为实体类

目录
  • ObjectMapper将复杂Map转为实体类
    • 背景
    • 1.使用ObjectMapper要添加的依赖是
    • 2.将复杂Map开始转换
  • objectMapper 解析复杂json toMap

ObjectMapper将复杂Map转为实体类

背景

用fastjson转换复杂Map是浅层的可以转 深层的转换为null.,这时候可以用jackson来转。

1.使用ObjectMapper要添加的依赖是

       <!--添加jackson包-->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.8.3</version>
        </dependency>

2.将复杂Map开始转换

ObjectMapper mapper = new ObjectMapper();
Resource resource = mapper.convertValue(Map, Resource.class);

注意的点:实体类中的字段是驼峰的 首字母不能大写。

objectMapper 解析复杂json toMap

public void parseSettings(){

        String settings = "{\"基本设置\":{\"name\":\"基本设置\",\"entries\":[{\"name\":\"站号\",\"type\":\"number\",\"description\":\"\",\"value\":\"1\"},{\"name\":\"AppEUI\",\"type\":\"string\",\"description\":\"\",\"value\":\"2C26C503A0010006\"},{\"name\":\"DevEUI\",\"type\":\"string\",\"description\":\"\",\"value\":\"4A7703A000FC09\"},{\"name\":\"命令次数\",\"type\":\"number\",\"description\":\"\",\"value\":\"2\"},{\"name\":\"父井号\",\"type\":\"string\",\"description\":\"\",\"value\":\"test11\"}]},\"油阀间\":{\"name\":\"油阀间\",\"entries\":[{\"name\":\"上传间隔时间\",\"type\":\"number\",\"description\":\"\",\"value\":\"2\"},{\"name\":\"设定值\",\"type\":\"number\",\"description\":\"\",\"value\":\"10\"},{\"name\":\"波动值\",\"type\":\"number\",\"description\":\"\",\"value\":\"1\"},{\"name\":\"控制模式\",\"type\":\"number\",\"description\":\"\",\"value\":\"0\"},{\"name\":\"调节上限\",\"type\":\"number\",\"description\":\"\",\"value\":\"15\"},{\"name\":\"调节下限\",\"type\":\"number\",\"description\":\"\",\"value\":\"5\"},{\"name\":\"调节时间\",\"type\":\"number\",\"description\":\"\",\"value\":\"10\"}]},\"采集调度\":{\"name\":\"采集调度\",\"entries\":[{\"name\":\"interval\",\"type\":\"number\",\"description\":\"\",\"value\":\"2\"}]}}";
        ObjectMapper objectMapper = new ObjectMapper();
        JavaType javaType = objectMapper.getTypeFactory().constructMapType(HashMap.class, String.class, SettingGroup.class);
        try {
            Map<String,SettingGroup>    mapSettings =    objectMapper.readValue(settings, javaType);
             SettingGroup group = mapSettings.get("基本设置");
             for (SettingEntry entry : group.getEntries()) {
                 System.out.println(entry.getName());
             }

             group = mapSettings.get("油阀间");
             for (SettingEntry entry : group.getEntries()) {
                 System.out.println("entry.Name:"+entry.getName()+" entry.getValue:"+entry.getValue());
             }
        } catch (JsonParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (JsonMappingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Java代码实现Map和Object互转及Map和Json互转

    先给大家介绍下map和object互相转换的代码. 具体代码如所示: /** * 使用org.apache.commons.beanutils进行转换 */ class A { public static Object mapToObject(Map<String, Object> map, Class<?> beanClass) throws Exception { if (map == null) return null; Object obj = beanClass.newI

  • 实例解析Json反序列化之ObjectMapper(自定义实现反序列化方法)

    对于服务器端开发人员而言,调用第三方接口获取数据,将其"代理"转化并返给客户端几乎是家常便饭的事儿.    一般情况下,第三方接口返回的数据类型是json格式,而服务器开发人员则需将json格式的数据转换成对象,继而对其进行处理并封装,以返回给客户端. 在不是特别考虑效率的情况下(对于搜索.缓存等情形可以考虑使用thrift和protobuffer),通常我们会选取jackson包中的ObjectMapper类对json串反序列化以得到相应对象.通常会选取readValue(Strin

  • 举例讲解Java的Jackson库中ObjectMapper类的使用

    ObjectMapper类是Jackson库的主要类.它提供一些功能将转换成Java对象匹配JSON结构,反之亦然.它使用JsonParser和JsonGenerator的实例实现JSON实际的读/写. 类声明 以下是org.codehaus.jackson.map.ObjectMapper类的声明: public class ObjectMapper extends ObjectCodec implements Versioned 嵌套类 S.N. 类 & 描述 1 static class

  • java实现Object和Map之间的转换3种方式

    利用commons.BeanUtils实现Obj和Map之间转换,这种是最简单,也是最经常用的 public static Object mapToObject(Map<String, Object> map, Class<?> beanClass) throws Exception { if (map == null) return null; Object obj = beanClass.newInstance(); org.apache.commons.beanutils.B

  • java中用ObjectMapper类实现Json与bean的转换示例

    前言 ObjectMapper是jackson中的方法,本文主要给大家介绍了关于java中用ObjectMapper类实现Json与bean转换的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 一.将json字符串转为bean public class JsonToJavaBean { public static void main(String[] args) { String str="{\"student\":[{\"name\&q

  • 如何用ObjectMapper将复杂Map转换为实体类

    目录 ObjectMapper将复杂Map转为实体类 背景 1.使用ObjectMapper要添加的依赖是 2.将复杂Map开始转换 objectMapper 解析复杂json toMap ObjectMapper将复杂Map转为实体类 背景 用fastjson转换复杂Map是浅层的可以转 深层的转换为null.,这时候可以用jackson来转. 1.使用ObjectMapper要添加的依赖是 <!--添加jackson包--> <dependency> <groupId&g

  • java中map与实体类的相互转换操作

    java中map与实体类的相互转换 1. 在 pom.xml 中引入依赖包 <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.54</version> </dependency> 2. 在控制类中引入 import com.alibaba.fastjson.JSON; 3. 类型转

  • 如何将Object类转换为实体类

    目录 将Object类转换为实体类 问题描述 问题原因 解决办法 实体类之间的相互转换 将Object类转换为实体类 问题描述 在用SpringBoot写controller的时候,需要接受一个map的Object,之后要把Object转为特定的类,代码如下: public boolean postArticle(@RequestBody Map<String, Object> map) {         ArticleInfo articleInfo = (ArticleInfo) map

  • springmvc接收json串,转换为实体类List方法

    开始我用List<泛型>接受json串,如下,结果list内并非泛型对象,而是JSONObject对象.这样在遍历的时候就报了转化异常的错误.我不知道为什么springmvc在处理这个的时候并没有将json对象转化为泛型对象(我认为应该能获取到,可能是配置问题或者使用不当导致的),这个错误用实际证明了java是假泛型. 如何解决呢,暂时有两种方案,第一种是使用json工具类转化json对象为泛型对象,第二种使用数组接受,然后将数组转化为list对象.代码如下下.如果哪天找到了更好的解决方案,或

  • Java如何实现实体类转Map、Map转实体类

    实体类转Map.Map转实体类 1.创建entity(User.java) package com.jeff.entity; public class User { private String userName; private String password; private Integer age; public User() { super(); } public User(String userName, String password, Integer age) { super();

  • C# DataTable 转换为 实体类对象实例

    复制代码 代码如下: public class User {         public int ID { get; set; }         public string Name { get; set; } } //对应数据库表: //User //字段:ID.Name 那么你也许需要编写将DataTable 转换为实体对象的方法,便利DataTable.Rows 获得并填充.. 下面是我写的一个通用方法,分享+记录,便于日后直接Copy ~ 复制代码 代码如下: private sta

  • java实体类转成map的实现

    目录 java实体类转成map 1.第一种 2.第二种 java实体类与map集合互转 java实体类转成map 1.第一种  <!-- 配置gson -->         <dependency>             <groupId>com.google.code.gson</groupId>             <artifactId>gson</artifactId>             <version&

  • Android JSON数据与实体类之间的相互转化(GSON的用法)

    这篇文章就是示范如何用GSON把JSON数据与实体类进行相互转化,需要用到gson-2.3.1.jar这个包.直接贴代码了: import java.lang.reflect.Type; import java.util.ArrayList; import java.util.List; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.reflect.TypeToken

  • Spring Data JPA映射自定义实体类操作

    目录 Spring Data JPA映射自定义实体类 JPA 配置类实体映射示例 Spring Data JPA映射自定义实体类 这个问题困扰了我2天=-=,好像也能使用 jpql解决 先说下自己的功能:查询oracle最近sql执行记录 sql很简单:[如果需要分页,需要自己手动分页,因为你使用分页工具他第一页查询不会查询rownum,第二页查询就会查询rownum,然而这个返回的List<Object[]>中的参数必须要和实体类中一一对应,所以这就有一个不可控制的属性rownum,所以我们

  • 使用ObjectMapper把Json转换为复杂的实体类

    ObjectMapper Json转换为复杂的实体类 实体类 主实体类* GetRigSmsResult* 里面的* smsContentList 是一个list类型的的 SmsContentSmsContent *集合. /** * * * @author 李关钦 * @version 2017年3月14日 */ public class GetRigSmsResult { private String dataCoding; private String messageParts; priv

随机推荐