亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

當響應不包含頭信息時如何解析json響應

當響應不包含頭信息時如何解析json響應

MM們 2022-11-30 13:17:10
我正在嘗試解析 json 響應,以便我可以從對象中獲取元素,出現以下錯誤 A JSONObject text must begin with '{' at 1 [character 2 line 1]public static  String parseJsonResponse(String json){    String uId ="";    try {         JSONObject jsonObj = new JSONObject(json);         // String fname = jsonObj.getString("fname");         //String lname = jsonObj.getString("lname");         String aId = jsonObj.getString("id");         uId = aId;      } catch (Exception e) {         e.printStackTrace();     }    return uId;}這是使用郵遞員的 json 響應,您會注意到沒有標題[    {        "id": "emplo000000000043567",        "displayName": "Tester, user1",           },    {        "id": "emplo000000000035386",        "displayName": "Tester, User2",    }]
查看完整描述

3 回答

?
慕的地6264312

TA貢獻1817條經驗 獲得超6個贊

就像上面提到的評論一樣,這是一個 JSON 數組,因此需要將其解析為 JSON 數組而不是 JSON 對象。只需使用您正在使用的庫中提供的 JSONArray 等效項。

另一方面,對于上面的 JSON 響應,將其解析為 JSON 數組會失敗,因為格式不正確。請注意每個對象中每個最后一個鍵值末尾的逗號。這會導致解析器在嘗試將其解析為 JSON 數組時失敗。如果這是您在此處編寫代碼片段時的錯誤,請忽略本段。否則,如果那是實際的 JSON 響應,那么我想您需要提出一個新問題……在 Postman 論壇上。


查看完整回答
反對 回復 2022-11-30
?
慕容708150

TA貢獻1831條經驗 獲得超4個贊

首先,你的json格式是錯誤的。正確的 json 格式應該是:


[

    {

        "id": "emplo000000000043567",

        "displayName": "Tester, user1"

    },

    {

        "id": "emplo000000000035386",

        "displayName": "Tester, User2"

    }

]

現在,

  1. 您的響應是 JSON 數組。因此,首先將解析后的對象分配到 JSON 數組中,如JSONArray array = (JSONArray) obj ;

  2. 這個 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 庫。


查看完整回答
反對 回復 2022-11-30
?
楊__羊羊

TA貢獻1943條經驗 獲得超7個贊

這個案例有幾個想法。這是我的。

  1. 使用 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;

}

祝你有美好的一天..


查看完整回答
反對 回復 2022-11-30
  • 3 回答
  • 0 關注
  • 136 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號