如何从插座上阅读JSON?爪哇
我正在做服务器/客户端网络。消息作为JSON对象发送。 我有一种编写JSON-Object的方法,但是我读取JSON-Object的方法无效。我没有任何例外,但是没有像挖掘的输出。 BufferedReader一定有问题。我不知道如何从发送它的插座上获取JSON-OBJECT。 写作方法:
public void writeMessage(JSONObject json) {
try {
PrintWriter printWriter = new PrintWriter(
new OutputStreamWriter(
socket.getOutputStream()));
printWriter.print(json);
printWriter.flush();
} catch (IOException writeMessageException) {
System.out.println("!");
}
}
阅读消息/接收消息的方法:
private static void readMessageFromServer(Socket socket) {
try (BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream())))
{
StringBuilder sb = new StringBuilder();
String readLine;
while ((readLine = br.readLine()) != null) {
sb.append(readLine);
}
JSONObject js = new JSONObject(sb.toString());
String action1 = (String) js.get("action1");
System.out.println(action1);
} catch(IOException e) {
System.out.println("!");
}
}
谢谢:)
I am doing a Server/Client network. The messages are send as Json Objects.
I have a method for writing the Json-Object but my method for reading the Json-Object doesnt work. I dont have any exceptions but there is no output like excpected. Something must be wrong with the bufferedReader. I dont know how to get that Json-Object from the socket who sent it.
Method for writing:
public void writeMessage(JSONObject json) {
try {
PrintWriter printWriter = new PrintWriter(
new OutputStreamWriter(
socket.getOutputStream()));
printWriter.print(json);
printWriter.flush();
} catch (IOException writeMessageException) {
System.out.println("!");
}
}
method for reading the message/ receiving the message:
private static void readMessageFromServer(Socket socket) {
try (BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream())))
{
StringBuilder sb = new StringBuilder();
String readLine;
while ((readLine = br.readLine()) != null) {
sb.append(readLine);
}
JSONObject js = new JSONObject(sb.toString());
String action1 = (String) js.get("action1");
System.out.println(action1);
} catch(IOException e) {
System.out.println("!");
}
}
Thank you :)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
Javax Websocket
。.并指定您期望使用pojos接收的类型参数。
这样,您就可以创建一个侦听器(@OnMessage)并在收到的每条消息后立即处理。您还可以使用字符串类型参数来实现MessageHandler,并在
onMessage
方法中处理自己的JSON自己解析;如果您想坚持使用Java Net插座,请考虑切换到杰克逊对象映射器从jsonobject中,这样您就可以将输入流转换为任何对象:
更多javax websocket 示例
javax websocket
.javax.websocket client simple example
You can simply implement
MessageHandler
and specify the type parameter you expecting to receive using POJOs.That way you are creating a listener (@OnMessage) and handling each message as soon as it received. You can also implement MessageHandler with String type parameter and handle parsing the json yourself inside
OnMessage
method;If you want to stick with java net socket consider switching to Jackson Object Mapper from JSONObject, that way you can convert input stream into any object:
more javax webSocket examples
更多的详细信息可以在此处找到
https://wwwww.baeldung.com/java-input--inputstream-server-server-server-server-server-server-server-server-server-server-server-sercock
More detail info can be found here
https://www.baeldung.com/java-inputstream-server-socket