2016-06-07 1 views
0

В этом случае я использую весенний ботинок. и Rest для возврата данных.Пользовательский Json с пружиной контура

Вот JSON я щас из базы данных с помощью crudrepository:

{ 
    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 на моем контроллере, поэтому каждый раз, когда я нахожу, что мой «уровень» менялся, мне нужно добавить это «[]», поэтому мои данные «level: 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? Любая помощь будет настолько полезной Спасибо!

EDIT

Вот мой репозиторий код:

public interface pspnlRepository extends CrudRepository<pspnlfield, Long>{ 


    Iterable<pspnlfield> findAll(); 
} 
+0

1. Что вы пробовали? 2. Вы можете попробовать использовать Gson ... JsonArray и JsonElement – Atul

+0

Я пытаюсь использовать jsonarray, но я не знаю, как искать определенный ключ и добавлять [] внутри @Atul –

+0

«формы» - это JsonArray, который представляет собой набор JsonObjects. Вы повторяете цикл и проверяете JsonObject и находите значение с помощью jsonObject.get («level») ... дайте мне знать, если вам нужна дальнейшая помощь. – 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

так как я могу получить ключ «уровень» и зацикливаться внутри. так как я пытаюсь передать поток, который вы отправляете раньше. он не соответствует –

+0

, что s зависит от вашего объекта 'pspnlField', возвращаемого' pspnlRepository.findAll() ', я просто дал вам способ сделать то, что вы хотите, вместо того, чтобы зацикливать на json-данные, которые вы зацикливаете на списке. –

+0

поэтому, если я использую 'findAll()' Я не могу получить другой ключевой объект? –