2016-06-07 65 views
0

我在這種情況下使用彈簧引導。和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

回答

0

嘗試了這一點:

@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()'我無法獲得其他關鍵對象? –