簡體   English   中英

如何使用 Java 檢查 JSON 響應是否返回 [] 或帶有正文的響應?

[英]How to check if JSON respone returns [ ] or response with body using Java?

我有一個 API,它針對不同的事件 ID 多次命中。
很少有約會,也很少有人沒有。 我收到此錯誤:

塊編碼消息體過早結束:預期關閉塊

這是我的代碼:

CloseableHttpClient client = HttpClients.createDefault();
HttpGet request = new HttpGet("my API URL");

System.out.println("request:"+request.getURI());
String list = request.getURI().toString();

request.addHeader("Authorization",bearerToken); // Adding the bearer token
request.addHeader("Content-Type", "application/json");

CloseableHttpResponse response = client.execute(request);

//try
//{
    System.out.println(response.getStatusLine());
    System.out.println(response.getEntity().getContentLength());

    HttpEntity ent = response.getEntity();

    if(ent!=null)
    {
        //InputStream in = new PushbackInputStream(ent.getContent());
        //in = new ByteArrayInputStream(EntityUtils.toByteArray(ent));
        EntityUtils.consume(ent);
        System.out.println(response.getEntity());
        //in.close();
    }

有人能告訴我我哪里出錯了,或者我們應該怎么做?

如果我的響應沒有數據,我只需要打印它們並轉到下一個事件 ID 並檢查。
我的一些 API 只返回 []。 Java 也很新。

當你使用 json 庫時,它們通常有一些方法來檢查 json 對象是否為空。 您可以在代碼中使用它們,例如在 JSONObject 中,我們有 isEmpty() 方法,它返回一個布爾值,這正是您所需要的。

此外,如果您的問題只是答案的條件之一,請在檢查不為空后將其放入“if 條件”中,例如:

if (string != null || !string.equals("[]")) {
    // your code 
}

但這不是通用方法,因此您的代碼與所有類型的答案都不兼容。

您是否嘗試過檢查 json 對象長度是否為零?

例如。

if(ent.length == 0){
    //Do thing
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM