我有一个动态JSON数组,我需要根据“isCalculatedField”过滤JSON:false。
[{
"id": "CX.VOEFAIL.CREATEDT",
"description": "Task Management - Voe Fail Review Create Date",
"format": "STRING",
"maxLength": 40,
"modelPath": "Loan.CustomFields[(FieldName == 'CX.VOEFAIL.CREATEDT')].StringValue",
"isCalculatedField": false
},
{
"id": "CX.VOEFAIL.TASKCNT",
"description": "Task Management - VOE Fail Review Task Count",
"format": "INTEGER",
"maxLength": 0,
"modelPath": "Loan.CustomFields[(FieldName == 'CX.VOEFAIL.TASKCNT')].StringValue",
"isCalculatedField": false
},
{
"id": "CX.YEARS.AT.EMPLOYER",
"description": "Years employed",
"format": "DROPDOWNLIST",
"maxLength": 0,
"options": [
"Yes"
],
"modelPath": "Loan.CustomFields[(FieldName == 'CX.YEARS.AT.EMPLOYER')].StringValue",
"isCalculatedField": true
},
{
"id": "CX.YEARS.AT.RESIDENCE",
"description": "Years at residence",
"format": "DROPDOWNLIST",
"maxLength": 0,
"options": [
"Yes"
],
"modelPath": "Loan.CustomFields[(FieldName == 'CX.YEARS.AT.RESIDENCE')].StringValue",
"isCalculatedField": true
}]
如何获取包含“isCalculatedField”的子JSON列表:false? 我在String中有这个JSON数据。
答案 0 :(得分:0)
使用JSON-P:
import java.io.StringReader;
import javax.json.Json;
import javax.json.JsonArray;
import javax.json.JsonObject;
import javax.json.JsonReader;
public class Playground {
public static void main(String[] args) {
String json = "[{\n"
+ " \"id\": \"CX.VOEFAIL.CREATEDT\",\n"
+ " \"description\": \"Task Management - Voe Fail Review Create Date\",\n"
+ " \"format\": \"STRING\",\n"
+ " \"maxLength\": 40,\n"
+ " \"modelPath\": \"Loan.CustomFields[(FieldName == 'CX.VOEFAIL.CREATEDT')].StringValue\",\n"
+ " \"isCalculatedField\": false\n"
+ "},\n"
+ "{\n"
+ " \"id\": \"CX.VOEFAIL.TASKCNT\",\n"
+ " \"description\": \"Task Management - VOE Fail Review Task Count\",\n"
+ " \"format\": \"INTEGER\",\n"
+ " \"maxLength\": 0,\n"
+ " \"modelPath\": \"Loan.CustomFields[(FieldName == 'CX.VOEFAIL.TASKCNT')].StringValue\",\n"
+ " \"isCalculatedField\": false\n"
+ "},\n"
+ "{\n"
+ " \"id\": \"CX.YEARS.AT.EMPLOYER\",\n"
+ " \"description\": \"Years employed\",\n"
+ " \"format\": \"DROPDOWNLIST\",\n"
+ " \"maxLength\": 0,\n"
+ " \"options\": [\n"
+ " \"Yes\"\n"
+ " ],\n"
+ " \"modelPath\": \"Loan.CustomFields[(FieldName == 'CX.YEARS.AT.EMPLOYER')].StringValue\",\n"
+ " \"isCalculatedField\": true\n"
+ "},\n"
+ "{\n"
+ " \"id\": \"CX.YEARS.AT.RESIDENCE\",\n"
+ " \"description\": \"Years at residence\",\n"
+ " \"format\": \"DROPDOWNLIST\",\n"
+ " \"maxLength\": 0,\n"
+ " \"options\": [\n"
+ " \"Yes\"\n"
+ " ],\n"
+ " \"modelPath\": \"Loan.CustomFields[(FieldName == 'CX.YEARS.AT.RESIDENCE')].StringValue\",\n"
+ " \"isCalculatedField\": true\n"
+ "}]";
JsonReader reader = Json.createReader(new StringReader(json));
JsonArray array = reader.readArray();
for (int i = 0; i < array.size(); i++) {
JsonObject obj = array.getJsonObject(i);
if (!obj.getBoolean("isCalculatedField")) {
System.out.println(obj.toString() + " is not calculated");
}
}
}
}
输出:
{"id":"CX.VOEFAIL.CREATEDT","description":"Task Management - Voe Fail Review Create Date","format":"STRING","maxLength":40,"modelPath":"Loan.CustomFields[(FieldName == 'CX.VOEFAIL.CREATEDT')].StringValue","isCalculatedField":false} is not calculated
{"id":"CX.VOEFAIL.TASKCNT","description":"Task Management - VOE Fail Review Task Count","format":"INTEGER","maxLength":0,"modelPath":"Loan.CustomFields[(FieldName == 'CX.VOEFAIL.TASKCNT')].StringValue","isCalculatedField":false} is not calculated
答案 1 :(得分:0)
您可以使用DSM库。通过使用它,您可以在读取JSON数据时过滤JSON。
您将定义一个包含映射定义的YAML文件
映射文件:
result:
type: array # result is array
path: /
filter: self.data.isCalculatedField # filter by isCalculatedField
fields:
id:
description:
modelPath:
isCalculatedField: boolean
format:
使用DSM过滤数据。
DSM dsm=new DSMBuilder(new File("path/to/config.yaml")).create();
Object object=dsm.toObject(new File("path/to/data.json");
这是结果:
[ {
"id" : "CX.YEARS.AT.EMPLOYER",
"description" : "Years employed",
"format" : "DROPDOWNLIST",
"modelPath" : "Loan.CustomFields[(FieldName == 'CX.YEARS.AT.EMPLOYER')].StringValue",
"isCalculatedField" : true
}, {
"id" : "CX.YEARS.AT.RESIDENCE",
"description" : "Years at residence",
"format" : "DROPDOWNLIST",
"modelPath" : "Loan.CustomFields[(FieldName == 'CX.YEARS.AT.RESIDENCE')].StringValue",
"isCalculatedField" : true
}, {
"id" : "CX.YEARS.AT.RESIDENCE",
"description" : "Years at residence",
"format" : "DROPDOWNLIST",
"modelPath" : "Loan.CustomFields[(FieldName == 'CX.YEARS.AT.RESIDENCE')].StringValue",
"isCalculatedField" : true
} ]