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

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

從 JSON/String 文件中獲取特定的 JSON 屬性

從 JSON/String 文件中獲取特定的 JSON 屬性

郎朗坤 2021-07-12 12:11:37
我正在向服務器發送 POST 請求。服務器使用以下 (JSON) 進行響應:{"data":[      {  "password":"1234578566",  "status":"processing"}], "status":200}這是我的 POST 方法:public static void sendPostRequest(String conversion) throws IOException, AuthenticationException {CloseableHttpClient client = HttpClients.createDefault();HttpPost httpPost = new HttpPost("https://url.com");httpPost.setEntity(new StringEntity(conversion));UsernamePasswordCredentials credentials =        new UsernamePasswordCredentials("username", "password");httpPost.addHeader(new BasicScheme().authenticate(credentials, httpPost, null));httpPost.setHeader("Accept", "application/json");httpPost.setHeader("Content-type", "application/json");HttpResponse response = client.execute(httpPost);String data = EntityUtils.toString(response.getEntity());client.close();//     System.out.println(data); } 請注意,字符串“data”是響應上述 JSON 數據的服務器。現在,我試圖從數據中獲取密碼屬性。public static void getValue(String data) throws ParseException {    JSONObject object = (JSONObject) new JSONParser().parse(data);    JSONArray array = (JSONArray) object.get("data");    JSONObject attribute = (JSONObject) array.get(0);    JSONObject userData = (JSONObject) attribute.get("password");    String result =  userData.toString();    System.out.println(result);}Exception in thread "main" Unexpected character (T) at position 0.at org.json.simple.parser.Yylex.yylex(Unknown Source)at org.json.simple.parser.JSONParser.nextToken(Unknown Source)at org.json.simple.parser.JSONParser.parse(Unknown Source)at org.json.simple.parser.JSONParser.parse(Unknown Source)at org.json.simple.parser.JSONParser.parse(Unknown Source)我收到此異常,但我想知道為什么?曾試圖在這里和那里改變,但沒有成功。這些是我的進口:import org.json.simple.JSONObject;import org.json.simple.JSONArray;import org.json.simple.parser.ParseException;import org.json.simple.parser.JSONParser;謝謝你。
查看完整描述

1 回答

?
森欄

TA貢獻1810條經驗 獲得超5個贊

看起來您正在錯誤地解析響應。這里有兩件事要做。


1) 確保從響應中正確獲取 JSON 數據。您可以點擊此鏈接從 HTTP 響應中獲取JSON 對象,以從您的響應中獲取字符串化的 JSON 數據。


2) 使用您的 JSON 以從中獲取特定值。您的getValue()方法只需稍加修改即可用于該目的。我對您的方法進行了一些更改,這里是相同的更新代碼:


public static void getValue(String data) {

        try {

        JSONObject responseObject = new JSONObject(data);       

        JSONArray jsonArray = (JSONArray) responseObject.get("data");

        JSONObject jsonObject = (JSONObject) jsonArray.get(0);

        String result  = jsonObject.getString("password");


        System.out.println(result);

        } catch (JSONException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }

    }

我已經用你的數據對其進行了測試,它按預期工作,通過控制臺打印 1234578566。


注意:我在這里使用了 org.json lib 而不是簡單的 json。


希望這可以幫助。


查看完整回答
反對 回復 2021-07-14
  • 1 回答
  • 0 關注
  • 241 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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