簡體   English   中英

Java - 檢查響應是否為JSON

[英]Java - Check Response is JSON or not

我正在創建一個Server HealthCheck頁面。 大多數服務器返回JSONObject,我可以使用以下方法輕松解析它:

String jsonText = readAll(br);              
JSONObject json = new JSONObject(jsonText);
JSONObject resp = json.getJSONObject("Response");

現在我的問題是其他不返回JSON的服務器。 有些人正在返回String,有些pdf文件是一些圖像,因為所有響應都是200 OK我應該返回Positive healthcheck。

但是我使用Future Threads並在4秒后超時我的請求。 並且所有返回JSON之外的任何服務器的服務器都被卡在“new JSONObject(jsonText);”

有什么辦法可以檢查Java中是否有JSON的類型是否為JSON?

更新:

我發現了我的錯誤 - 愚蠢的。 在try catch塊中,我只捕獲IOException,它沒有捕獲JSONException(並且也沒有顯示任何錯誤 - dunno y)。 我為JSONException添加了一個新的catch塊,它現在適用於我的解決方案。

然而,這不是優雅的解決方案,@ Dave,@ Radai和@Koi的解決方案是正確的方法。

不要解析字符串。 返回一步,檢查HTTP響應的Content-Type標頭。 如果響應包含JSON數據,則Content-Type應為application/jsonsource )。

使用response.getMediaType()檢查響應中的MediaType。 如果它是json,則返回application / json。

暫無
暫無

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

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