【问题标题】:Custom Json with loop spring带循环弹簧的自定义 Json
【发布时间】:2016-06-07 08:05:28
【问题描述】:

在这种情况下,我使用的是弹簧靴。和 Rest 控制器返回数据。

这是我现在使用 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();
}

【问题讨论】:

  • 1.你试过什么? 2.可以尝试使用Gson...JsonArray和JsonElement
  • 我尝试使用 jsonarray 但是我不知道如何搜索特定键并在 @Atul 中添加 []
  • “表单”是一个 JsonArray,它是 JsonObject 的集合。您使用循环进行迭代并检查 JsonObject 并使用 jsonObject.get("level") 查找值...如果您需要进一步帮助,请告诉我
  • 得到了逻辑,不知道如何编码。任何可以帮助的来源可能是@Atul
  • 要添加到 json 的数组元素的类型是什么? pspnlRepository.findAll() 的返回类型是什么??

标签: arrays json spring


【解决方案1】:

试试这个:

@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();
    }

【讨论】:

  • 那么我怎样才能获得关键的“关卡”并在里面循环。因为我尝试了您之前发送的stackoveflow。不匹配
  • 这取决于pspnlRepository.findAll() 返回的对象pspnlField,我只是给了你一种方法来做你想做的事,而不是循环你在列表上循环的json数据。
  • 所以如果我使用findAll() 我不能得到其他关键对象?
猜你喜欢
  • 1970-01-01
  • 2013-10-15
  • 1970-01-01
  • 2013-08-08
  • 2015-02-08
  • 2011-06-30
  • 1970-01-01
  • 2019-11-09
  • 1970-01-01
相关资源
最近更新 更多