Java - 获取不同数量的 json 变量

标签 java json

我正在使用 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/

相关文章:

java - 房间内可流动

java - 从网页簇中提取最佳图像

java - 在 JUnit Test 子类中引用 protected 变量时获取 NullPointerException

java - GWT/GAE(Java) : when combined with GAE, app.yaml/web.xml 用户身份验证和登录/注销实际上不起作用

java - 使用volley库加载json数组

php - 将 php 数组转换为单个 JSON 对象

java - 登录多线程应用程序

jquery - 如何轻松将多维JSON解析为html?

javascript - 如何将本地数组转换为远程 json 数据?

javascript - 来自 Foreach 循环的动态幻灯片