3 回答

TA貢獻1817條經驗 獲得超6個贊
就像上面提到的評論一樣,這是一個 JSON 數組,因此需要將其解析為 JSON 數組而不是 JSON 對象。只需使用您正在使用的庫中提供的 JSONArray 等效項。
另一方面,對于上面的 JSON 響應,將其解析為 JSON 數組會失敗,因為格式不正確。請注意每個對象中每個最后一個鍵值末尾的逗號。這會導致解析器在嘗試將其解析為 JSON 數組時失敗。如果這是您在此處編寫代碼片段時的錯誤,請忽略本段。否則,如果那是實際的 JSON 響應,那么我想您需要提出一個新問題……在 Postman 論壇上。

TA貢獻1831條經驗 獲得超4個贊
首先,你的json格式是錯誤的。正確的 json 格式應該是:
[
{
"id": "emplo000000000043567",
"displayName": "Tester, user1"
},
{
"id": "emplo000000000035386",
"displayName": "Tester, User2"
}
]
現在,
您的響應是 JSON 數組。因此,首先將解析后的對象分配到 JSON 數組中,如JSONArray array = (JSONArray) obj ;
這個 JSON 數組由兩個 JSON 對象組成,因此遍歷數組,獲取每個 JSON 對象并打印/返回任何你想要的鍵/值對。
示例代碼如下:(見邏輯)
public static void parseJsonResponse(String json)
throws JsonParseException, JsonMappingException, IOException, ParseException {
String aId ="";
JSONParser parser = new JSONParser();
Object obj = parser.parse(json);
JSONArray array = (JSONArray) obj;
for(int i=0;i<array.size();i++)
{
JSONObject jsonObject = (JSONObject) array.get(i);
aId = (String) jsonObject.get("id");
System.out.println(aId);
}
}
注意:我在這里使用了 json-simple java 庫。

TA貢獻1943條經驗 獲得超7個贊
這個案例有幾個想法。這是我的。
使用 json 簡單庫[鏈接]。
您可以簡單地將您的庫更改為 json 簡單庫,該庫具有用于 json 字符串的解析器類,然后在處理 json 對象之前使用 instanceof 方法進行檢測。
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
public static String parseJsonResponse(String json){
String uId ="";
try {
JSONParser parser = new JSONParser();
Object whichone = parser.parse(json);
if(whichone instanceof JSONObject)
{
JSONObject jsonObj = (JSONObject)whichone;
// String fname = jsonObj.getString("fname");
//String lname = jsonObj.getString("lname");
if(jsonObj.containsKey("id"))
uId = (String)jsonObj.get("id");
}
else if(whichone instanceof JSONArray)
{
JSONArray jsonArr = (JSONArray)whichone;
JSONObject jsonObj = null;
for(int i = 0; i < jsonArr.size(); i++)
{
jsonObj = (JSONObject) jsonArr.get(i);
if(jsonObj.containsKey("id"))
{
uId = (String)jsonObj.get("id");
System.out.println(uId);
}
}
}
else if(whichone instanceof String)
{
System.out.println("1?????" + whichone.toString());
}
else
{
System.out.println("2?????" + whichone.toString());
}
} catch (Exception e) {
e.printStackTrace();
}
return uId;
}
從 json 異常中檢測對象類型。在異常處理過程中,無論某個字符串是 json 對象還是 json 數組,您都可以捕獲它。
import org.json.JSONArray;
import org.json.JSONObject;
public static String parseJsonResponse(String json){
String uId ="";
try {
JSONObject jobj = new JSONObject(json);
if(jobj.has("id"))
uId = jobj.getString("id");
System.out.println(uId);
} catch (org.json.JSONException e) {
//e.printStackTrace();
JSONArray jsonArr = new JSONArray(json);
JSONObject jsonObj = null;
for(int i = 0; i < jsonArr.length(); i++)
{
jsonObj = jsonArr.getJSONObject(i);
if(jsonObj.has("id"))
{
uId = (String)jsonObj.get("id");
System.out.println(uId);
}
}
}
return uId;
}
用java工作。
解析第一個字符后,無論是json對象還是數組都可以找到。(我認為它會起作用......)
import org.json.JSONArray;
import org.json.JSONObject;
public static String parseJsonResponse(String json){
String uId ="";
boolean isJobj = json.charAt(0) == '[';
if(!isJobj) {
JSONObject jobj = new JSONObject(json);
if(jobj.has("id"))
uId = jobj.getString("id");
System.out.println(uId);
} else {
JSONArray jsonArr = new JSONArray(json);
JSONObject jsonObj = null;
for(int i = 0; i < jsonArr.length(); i++)
{
jsonObj = jsonArr.getJSONObject(i);
if(jsonObj.has("id"))
{
uId = (String)jsonObj.get("id");
System.out.println(uId);
}
}
}
return uId;
}
祝你有美好的一天..
添加回答
舉報