0
我正在向發送JSON字符串的HTTP服務器發送請求。我使用Gson序列化和反序列化JSON對象。今天,我觀察到這個我不明白的奇怪行爲。字符串對象與Java中的OutputStreamWriter中的字符串字面量
我:
String jsonAsString = gson.toJson(jsonAsObject).replace("\"", "\\\"");
System.out.println(jsonAsString);
輸出正是這一點:
{\"content\":\"Literal\",\"pos\":{\"left\":20,\"top\":20}}
現在我使用的是從HttpURLConnection
獲得OutputStreamWriter
來進行HTTP,JSON的有效載荷PUT請求。上述請求正常工作:
os.write("{\"content\":\"Literal\",\"pos\":{\"left\":20,\"top\":20}}");
然而,當我說:
os.write(jsonAsString);
...請求不工作(此服務器不返回任何錯誤,但我可以看到,當把JSON寫成字符串對象,它不會做它應該做的)。在字符串對象上使用字符串時,是否有區別。難道我做錯了什麼?
下面是摘錄:
public static void EditWidget(SurfaceWidget sw, String widgetId) {
Gson gson = new Gson();
String jsonWidget = gson.toJson(sw).replace("\"", "\\\"");
System.out.println(jsonWidget);
try {
HttpURLConnection hurl = getConnectionObject("PUT", "http://fltspc.itu.dk/widget/5162b1a0f835c1585e00009e/");
hurl.connect();
OutputStreamWriter os = new OutputStreamWriter(hurl.getOutputStream());
//os.write("{\"content\":\"Literal\",\"pos\":{\"left\":20,\"top\":20}}");
os.write(jsonWidget);
os.flush();
os.close();
System.out.println(hurl.getResponseCode());
} catch (IOException e) {
e.printStackTrace();
}
}