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

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

Java JSON POST 格式不正確

Java JSON POST 格式不正確

慕娘9325324 2021-11-11 14:18:06
我正在嘗試創建一種方法,該方法將發送給定 url 和 JSONArray 的 POST 請求。該代碼的摘錄如下:        URL url = new URL("https://jsonplaceholder.typicode.com/posts");        JSONObject obj = new JSONObject();        obj.put("id", -12);        obj.put("title", "titlevalue");        obj.put("body", "bodyvalue");        JSONArray arr = new JSONArray("[" + obj + "]");        con = (HttpURLConnection) url.openConnection();        con.setDoOutput(true);        con.setRequestMethod("POST");        con.setRequestProperty("Accept", "application/json");        con.setRequestProperty("charset", "utf-8");        System.out.println(arr.toString());        OutputStreamWriter wr= new OutputStreamWriter(con.getOutputStream(), "UTF-8");        wr.write(arr.toString());        wr.flush();        wr.close();        if (con.getResponseCode() != 201) // make sure request is successful            throw new Exception("Error code " + con.getResponseCode());        String str = new Scanner(con.getInputStream(), "UTF-8").useDelimiter("\\Z").next();        System.out.println(str);第一個打印語句顯示我的輸入格式正確[{    "id": -12,    "title": "titlevalue",    "body": "bodyvalue"}]這就是我想要的方式,但是在寫入輸出流后,第二個打印語句顯示它根本沒有正確格式化為 JSON,整個過程中都有奇怪的轉義字符,并且它沒有選擇鍵/值對。{    "[{\"id\":-12,\"title\":\"titlevalue\",\"body\":\"bodyvalue\"}]": "",    "id": 101}我在 POST 期間做錯了什么嗎?
查看完整描述

3 回答

?
富國滬深

TA貢獻1790條經驗 獲得超9個贊

試試下面:


JSONObject obj = new JSONObject();

obj.put("id", -12);

obj.put("title", "titlevalue");

obj.put("body", "bodyvalue");

JSONArray arr = new JSONArray();

arr.put(obj);

解釋:正如 Dave 解釋的那樣,將字符串放在用“[”和“]”包圍的字符串中,您引入了轉義字符。相反,只需將創建的對象放入數組中。更好的方法是使用 GSON 或 JACKSON 進行解析,您可以在互聯網上輕松找到教程。


查看完整回答
反對 回復 2021-11-11
?
暮色呼如

TA貢獻1853條經驗 獲得超9個贊

我認為您的問題可能出在以下方面:

 JSONArray arr = new JSONArray("[" + obj + "]");

我懷疑此時obj已轉換為字符串,而您JSONArray只包含一個字符串。也就是說,"[" + obj + "]"具有調用obj.toString()和創建傳遞給構造函數的單個字符串的效果。

這意味著當您將其寫出時,單個字符串會轉義嵌入的引號。該System.out.println(arr.toString());實際上是誤導。您沒有按預期設置對象。

解決方案可能很簡單:

JSONArray arr = new JSONArray();

arr.put(obj);


查看完整回答
反對 回復 2021-11-11
?
慕斯709654

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

我建議您使用 GSON 庫,它非常容易將任何 java 對象轉換為 JSON 字符串。


Gson gson = new Gson()

String json = gson.toJson(myObject);


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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