自定义JSON与循环弹簧

问题描述:

我在这种情况下使用弹簧引导。和Rest控制器来返回数据。自定义JSON与循环弹簧

下面是使用crudrepository的JSON我现在所拥有的数据库来自:

{ 
    forms: [ 
      { 
      paent: "", 
      posx: 1, 
      fieldname: "CostCenter", 
      posy: 1, 
      ishidden: false, 
      level: 0, 
      recordname: "CostCenter", 
      isrequired: true, 
      inputtype: "text", 
      issearchable: true, 
      label: "Cost Center", 
      seq: "1", 
      isenabled: false 
      }, 
      { 
      parent: "CostCenterDetail", 
      ishidden: false, 
      level: 1, 
      recordname: "CostCenter", 
      isrequired: true, 
      inputtype: "text", 
      issearchable: false, 
      label: "Description", 
      posx: 1, 
      fieldname: "Description", 
      posy: 2, 
      seq: "5", 
      isenabled: true 
      }, 
      { 
      parent: "CostCenterDetail", 
      ishidden: false, 
      level: 1, 
      recordname: "CostCenter", 
      isrequired: false, 
      inputtype: "text", 
      issearchable: false, 
      label: "Created User", 
      posx: 1, 
      fieldname: "CreateUserID", 
      posy: 4, 
      seq: "6", 
      isenabled: false 
      }, 
      { 
      parent: "CostCenterDetail", 
      ishidden: false, 
      level: 1, 
      recordname: "CostCenter", 
      isrequired: false, 
      inputtype: "date", 
      issearchable: false, 
      label: "Created User", 
      posx: 2, 
      fieldname: "CreateDate", 
      posy: 4, 
      seq: "7", 
      isenabled: false 
      }, 
      { 
      parent: "CostCenterDetail", 
      ishidden: false, 
      level: 1, 
      recordname: "CostCenter", 
      isrequired: false, 
      inputtype: "date", 
      issearchable: false, 
      label: "Created User", 
      posx: 2, 
      fieldname: "UpdateDate", 
      posy: 5, 
      seq: "9", 
      isenabled: false 
      }, 
      { 
      parent: "CostCenterDetail", 
      ishidden: false, 
      level: 1, 
      recordname: "CostCenter", 
      isrequired: true, 
      inputtype: "date", 
      issearchable: false, 
      label: "Effective Date", 
      posx: 1, 
      fieldname: "Effdt", 
      posy: 1, 
      seq: "3", 
      isenabled: true 
      }, 
      { 
      posx: 1, 
      fieldname: "CostCenterDetail", 
      posy: 2, 
      ishidden: false, 
      level: 0, 
      recordname: "Dummy", 
      isrequired: false, 
      inputtype: "scroll", 
      issearchable: false, 
      label: "Cost Center Detail", 
      seq: "2", 
      isenabled: true 
      }, 
      { 
      parent: "CostCenterDetail", 
      ishidden: false, 
      level: 1, 
      recordname: "CostCenter", 
      isrequired: false, 
      inputtype: "text", 
      issearchable: false, 
      label: "Created User", 
      posx: 1, 
      fieldname: "UpdateUserID", 
      posy: 5, 
      seq: "8", 
      isenabled: false 
      }, 
      { 
      parent: "CostCenterDetail", 
      ishidden: false, 
      level: 1, 
      recordname: "CostCenter", 
      isrequired: true, 
      inputtype: "text", 
      issearchable: false, 
      label: "Status", 
      posx: 2, 
      fieldname: "Status", 
      posy: 1, 
      seq: "4", 
      isenabled: true 
      } 
     ] 
} 

这是问题所在。我想循环我的控制器上的JSON,所以每次我发现我的“级别”正在改变,我需要添加这个“[]”,所以我的“级别:1”数据将在一个新的数组中。

例如:

{ 
    forms : [ 
      { 
       level:0, 
       ---data-- 
         [ { 
          level : 1, 
          --- data--- 
         } 
         ] 
      } 
      ] 
} 

这里是我的休息控制器:

@RequestMapping(value = "/alltable" ,method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) 
    @ResponseStatus(value = HttpStatus.OK) 
    public String test() { 
     JSONObject outerObject = new JSONObject(); 
     outerObject.put("forms", pspnlRepository.findAll()); 

     return outerObject.toString(); 
    } 

我怎么能环通过我的JSON和添加的json里面一个新的阵列? 任何帮助将非常有用 谢谢!

编辑

这里是我的仓库代码:

public interface pspnlRepository extends CrudRepository<pspnlfield, Long>{ 


    Iterable<pspnlfield> findAll(); 
} 
+0

1.你尝试过什么? 2.你可以尝试使用Gson ... JsonArray和JsonElement – Atul

+0

我尝试jsonarray但是我不知道如何搜索一个特定的键并在@Atul内添加[] –

+0

“forms”是一个JsonArray,它是一个集合一个JSONObjects。你迭代使用循环,并检查JsonObject,并通过使用jsonObject.get(“级别”)找到值...让我知道如果你需要进一步的帮助 – Atul

尝试了这一点:

@RequestMapping(value = "/alltable" ,method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) 
    @ResponseStatus(value = HttpStatus.OK) 
    public String test() { 
     JSONObject outerObject = new JSONObject(); 
     List<Object> pspnlfields=Lists.ArrayList(pspnlRepository.findAll()); 
     //you can loop here on pspnlfields and add what you want 
     // then put the edited list to your outerObject 
     outerObject.put("forms", pspnlfields); 

     return outerObject.toString(); 
    } 
+0

所以我怎么能得到关键“水平”和循环里面。因为我尝试之前发送的stackoveflow。它不匹配 –

+0

,它取决于你的对象'pspnlRepository.findAll()'返回的'pspnlField',我只是给你一种做你想做的事情的方式,而不是循环你在列表中循环的json数据。 –

+0

所以如果我使用'findAll()'我无法获得其他关键对象? –