【问题标题】:How to send an JSON array to another method如何将 JSON 数组发送到另一个方法
【发布时间】:2020-01-21 04:33:59
【问题描述】:

我正在从 API 获取 JSON 响应。 我应该将这些 JSON 响应返回给带有选定字段的另一种方法

我在这里获取所有 JSON 响应并将其放入一个 JSONArray,我应该返回另一个方法。

如何获取 String 和 Long 返回字段并将其放入 JSON 数组并将其返回给另一个方法

HttpClient client = HttpClientBuilder.create().build();
HttpGet request = new HttpGet("/2.0/clusters/list");
request.addHeader("Authorization", "bearerToken");
request.addHeader("cache-control", "no-cache");


HttpResponse response = client.execute(request);
System.out.println("Response Code:" +
        response.getStatusLine().getStatusCode());
String json = EntityUtils.toString(response.getEntity());

System.out.println("Gather Details\n");

JSONObject cluster = new JSONObject(json);
JSONArray clusterJsonArray = cluster.getJSONArray("clusters");

for (int i = 0; i < clusterJsonArray.length(); i++) {
    JSONObject iteratingObj = array.getJSONObject(i);
    String id = iteratingObj.get("id").toString();
    String time = iteratingObj.get("time").toString();

    System.out.println("Id:" + id + "time:" + time + "\n");

    List<String> strList = new ArrayList<>();

    for (int p = 0; p < clusterJsonArray.length(); p++) {
        strList.add(clusterJsonArray.getJSONObject(p).getString("id"));
        strList.add(clusterJsonArray.getJSONObject(p).getString("time"));
    }

    System.out.println("Arr:" + strList);

    if (response.getStatusLine().getStatusCode() != 200) {
        System.out.println("Failed HTTPresponse" + response.getStatusLine().getStatusCode() + "" + json);
    }
}

帮助我将带有选定字段的响应发送到其他方法,在该方法中 JSONarray 应该同时采用 String 和 Long 值并将其存储在 JSONArray 的一个变量中。

这是传入的 JSON:

"clusters": [ 
{ "id": "0411-0089ki", "driver": { }, "start_timestamp": 1568952332573, },

这里 JSONObject["time"] not a string 是我将其放入 JSONArray 时遇到的错误

【问题讨论】:

  • 请正确格式化您的代码。你错过了}
  • 请添加传入的json。
  • 这是我收到的示例 JSON 响应。 ```“集群”:[{“id”:“0411-0089ki”,“驱动程序”:{},“start_timestamp”:1568952332573,},```

标签: java arrays list object arraylist


【解决方案1】:

您提到的上述代码的意图尚不清楚。但是,

这里 JSONObject["time"] not a string 是我遇到的错误 我把它放到 JSONArray 中

你可以使用:

long time = iteratingObj.getLong("start_timestamp");

但是你不要在任何地方使用idtime 的局部变量。

我认为您在问题中输入的代码中的逻辑不正确。请仔细检查这两个循环的逻辑。

for (int i = 0; i < clusterJsonArray.length(); i++) {

for (int p = 0; p < clusterJsonArray.length(); p++) {

【讨论】:

    猜你喜欢
    • 2023-04-09
    • 2017-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多