目前,我正在使用Postman开发一个JSON API,我已经能够成功地检索属性,特别是“user”属性。
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
"Operations": [
{
"op": "replace",
"value": {
"roles": [
{
"value": "user"
}
]
}
}
]
}
字符串
然而,我现在面临的问题是只能从JSON中调用一个属性,我打算检索两个属性。系统只允许我调用第一个属性,即“user”。
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
"Operations": [
{
"op": "replace",
"value": {
"roles": [
{
"value": "user"
},
{
"value": "admin"
}
]
}
}
]
}
型
下面是从JSON API获取值的部分代码:
if (operations.getJSONObject(i).getJSONObject("value").has("roles")
&& operations.getJSONObject(i).getJSONObject("value")
.getJSONArray("roles").getJSONObject(0).has("value")) {
if (!(operations.getJSONObject(i).getJSONObject("value")
.getJSONArray("roles").getJSONObject(0).getString("value")
.trim().equals("")
|| operations.getJSONObject(i).getJSONObject("value")
.getJSONArray("roles").getJSONObject(0)
.getString("value").trim() == null)
&& operations.getJSONObject(i).getJSONObject("value")
.getJSONArray("roles").length() > 0) {
Value[] userInfo = new Value[1];
Value value = new Value(
operations.getJSONObject(i).getJSONObject("value")
.getJSONArray("roles").getJSONObject(0)
.getString("value").trim(),
operations.getJSONObject(i).getJSONObject("value")
.getJSONArray("roles").getJSONObject(0)
.getString("value").trim());
userInfo[0] = value;
Operations operation = new Operations(
operations.getJSONObject(i).getString("op").trim(),
"operations.value.roles.value", userInfo);
operationsObjArr[i] = operation;
} else {
proceed = false;
break;
}
}
型
如何克服这个限制并成功地检索这两个属性?
1条答案
按热度按时间oaxa6hgo1#
您的代码当前仅读取roles数组中的第一个元素(getJSONObject(0)),以检索需要遍历整个roles数组的多个属性。下面是修改后的代码片段,它将遍历roles数组并将每个role添加到userInfo数组。
字符串