我正在使用 java 构建一个访问 API 的工具。
我试图让用户决定使用哪些参数(例如通过复选框)。
因此用户会决定采用 5 个参数之一:
p1
p2
p3
p4
p5
然后我将使用这些参数调用 API 并接收 Json 字符串作为响应。
因此 Json String 可以是其中之一
{"data":[{"p1":"value1", "p2":"value2", "p3":"value3", "p4":"value4", "p5":"value5"}]}
{"data":[{"p1":"value1", "p2":"value2", "p3":"value3", "p4":"value4"}]}
{"data":[{"p1":"value1", "p2":"value2", "p3":"value3"}]}
{"data":[{"p1":"value1", "p2":"value2"}]}
or
{"data":[{"p1":"value1"}]}
我正在尝试将“数据”内的所有内容打印到控制台。这是我到目前为止得到的代码:
JsonParser parser = new JsonParser();
JsonObject json = (JsonObject)
parser.parse(adsInsights.toString());
System.out.println(json.get("p1").getAsString() + "\t"
+ json.get("p2").getAsString() + "\t"
+ json.get("p3").getAsString() + "\t"
+ json.get("p4").getAsString() + "\t" +
json.get("p5").getAsString()
);
我的问题是:如何确定要打印哪些内容,而不需要执行大量 if/else?
我需要的只是“数据”中的每个变量。有没有办法做到这一点?
编辑:
首先感谢大家的回答。
为了将来的引用,我想,这就是我所做的:
//getting the keys, which the user has selected. Detailed implementation irrelevant for this matter
String selectedKeys[] = getSelectedKeys();
JsonParser parser = new JsonParser();
JsonObject json = (JsonObject)
parser.parse(adsInsights.toString());
for(int i = 0; i < selectedKeys.length; i++) {
if(json.has(selectedKeys[i])) {
System.out.print(json.get(selectedKeys[i]).getAsString() + "\t");
}
}
System.out.println();
最佳答案
您可以迭代 Json 键,无论其中有哪些键并打印它们的值。
JsonParser parser = new JsonParser();
JsonObject json = (JsonObject)
parser.parse(adsInsights.toString());
for (key: json.keys) {
System.out.print(json.get(key).getAsString());
}
关于Java - 获取不同数量的 json 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55809853/