java - 是否可以使用 Smooks 或其他转换器进行 Java 对象到映射转换?

标签 java transformation smooks

我想要通用转换器,以便任何 Java 对象都转换为 Map,并且嵌套对象表示为嵌套 Map。例如

class MyA {
  String a;
  Integer b;
  MyB c;
  List<MyD> d;
}
class MyB {
  Double a;
  String b;
  MyB c;
}
class MyD {
  Double a;
  String b;
}

转化为:

Map {
  a:anyValue
  b:5
  c:Map {
    c:Map {
      a:asdfValue
      b:5.123    
      c:Map {
        a:fdaValue
        b:3.123
        c:null
      }
    }
  }
  d:Map {
    1:Map {
      a:aValue
      b:5.5
    }
    2:Map {
      a:bValue
      b:5.6
    }
  }
}

请发布您针对任何转型框架的解决方案。

最佳答案

您实际上可以自己轻松实现:

public Map<String, Object> convertObjectToMap(Object o) throws Exception {
    Map<String, Object> map = new HashMap<String, Object>();
    for (Field f : o.getClass().getDeclaredFields()) {
        f.setAccessible(true);
        Object value = f.get(o);
        if ((value instanceof Integer) || (value instanceof String) /* other primitives... */)
            map.put(f.getName(), value);
        else if (value instanceof Collection<?>) {
            int listindex = 0;
            for (Object listitem : (Collection<?>)value)
                map.put(f.getName() + "_" + listindex++, listitem);
        }
        else
            map.put(f.getName(), convertObjectToMap(value));
    }
    return map;
}

关于java - 是否可以使用 Smooks 或其他转换器进行 Java 对象到映射转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12284760/

相关文章:

json - Jolt 规范将父对象中的所有键应用于数组中的所有对象

c#-4.0 - 计算将一个矩形的 point1( x,y 坐标) 转换为另一个矩形的 Point1( x,y) 的比例因子

java - Freemarker - <#if ??> 似乎无法识别空对象

java - 使用 SMOOKS 生成 EDI 文件

java - 按字母顺序排序相当慢

java - 使用 XPath 解析损坏的 HTML 站点

swift - 如何计算 3D 空间中相机方向的两点之间的角度

xml - wso2 esb 文件处理示例 smooks csv 解析器第一行包括有效负载命名空间

java - 编译时出错 - 执行失败于 ':app:preDexDebug'

java - JFree 甘特图 - 每个作业和整数时间单位都有不同的颜色