自定义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();
}
尝试了这一点:
@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()'我无法获得其他关键对象? –
1.你尝试过什么? 2.你可以尝试使用Gson ... JsonArray和JsonElement – Atul
我尝试jsonarray但是我不知道如何搜索一个特定的键并在@Atul内添加[] –
“forms”是一个JsonArray,它是一个集合一个JSONObjects。你迭代使用循环,并检查JsonObject,并通过使用jsonObject.get(“级别”)找到值...让我知道如果你需要进一步的帮助 – Atul