如何使用freemarker生成嵌套实体

时间:2018-01-30 11:03:20

标签: java freemarker

我想使用freemarker

创建一个包含嵌套实体的json文件

我应该如何创建模板文件?

实体(为方便起见,您可以更改此结构):

@Data
public class Field {
  private String name;
  private boolean isNested; // 
  private List<Field> fields;
}

数据:

|--NameA
|  false
|  null
|
|--NameB
|  false
|  null
|
|--NameC
|  true
|  |--NameD
   |--false
   |--null
   |
   |--NameE
   |--false
   |--null

我想要的表达方式:

{
  NameA: {
    Type: NotNested  // not nested, display NotNested
  },
  NameB: {
    Type: NotNested
  },
  NameC: {          // nested, display nested fields
    Nested: {
      NameD: {
        Type: NotNested
      },
      NameE: {
        Type: NotNested
      }
    }
  }
}

1 个答案:

答案 0 :(得分:0)

File sqlWriteFile = new File("test.json");
FileOutputStream out = new FileOutputStream(sqlWriteFile);
OutputStreamWriter writer = new OutputStreamWriter(out, "UTF-8");

Map<String, Object> objA = new HashMap<>();
Map<String, Object> objC = new HashMap<>();
Map<String, Object> objB = new HashMap<>();
Map<String, Object> objD = new HashMap<>();

// ......
objA.put("objA", objC);
objC.put("objC", objB);
objB.put("objB", objD);

objectMapper.writerWithDefaultPrettyPrinter().writeValue(writer, objA);

结果:

{
  "objA":{
    "objC":{
      "objB":{
        ...
      }
    }
  }
}
相关问题