如何通过java套接字发送Json对象?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/21953958/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How to send Json object through java sockets?
提问by user3339626
How do you send Json object's through sockets preferable through ObjectOutputStream class in java this is what I got so far
你如何通过套接字发送 Json 对象,最好通过 Java 中的 ObjectOutputStream 类,这是我到目前为止所得到的
s = new Socket("192.168.0.100", 7777);
ObjectOutputStream out = new ObjectOutputStream(s.getOutputStream());
JSONObject object = new JSONObject();
object.put("type", "CONNECT");
out.writeObject(object);
But this gives an java.io.streamcorruptedexception exception any suggestions?
但这给了 java.io.streamcorruptedexception 异常有什么建议吗?
回答by Jon Skeet
Instead of using ObjectOutputStream
, you should create an OutputStreamWriter
, then use that to write the JSON textto the stream. You need to choose an encoding - I would suggest UTF-8. So for example:
ObjectOutputStream
您应该创建一个OutputStreamWriter
,而不是使用,然后使用它来将JSON 文本写入流。您需要选择一种编码 - 我建议使用 UTF-8。例如:
JSONObject json = new JSONObject();
json.put("type", "CONNECT");
Socket s = new Socket("192.168.0.100", 7777);
try (OutputStreamWriter out = new OutputStreamWriter(
s.getOutputStream(), StandardCharsets.UTF_8)) {
out.write(json.toString());
}