Java 读取和写入JSON流
我正在尝试使用Java 读取和写入JSON流,java,json,sockets,gson,Java,Json,Sockets,Gson,我正在尝试使用gson库直接从套接字流读写JSON 我有一个基类,所有消息都来自该基类: abstract class MessageBase { public String type = this.getClass().toString(); } 例如: class RequestMessage extends MessageBase { public String request = "my request"; } 我想做的是有以下方法: MessageBase read
gson
库直接从套接字流读写JSON
我有一个基类,所有消息都来自该基类:
abstract class MessageBase
{
public String type = this.getClass().toString();
}
例如:
class RequestMessage extends MessageBase
{
public String request = "my request";
}
我想做的是有以下方法:
MessageBase readMessage(Reader reader);
void writeMessage(Writer writer, MessageBase message);
他们直接从流中读写
这将允许我调用以下内容:
writeMessage(myWriter, (MessageBase) (new RequestMessage()))
或
我希望我希望实现的目标是有意义的,这可能吗
如有任何意见,将不胜感激。谢谢当然可以。您在实现方面遇到了什么问题?我没有实现。目前,我通过以消息长度为前缀的管道发送JSON消息。将整个消息读入字符串并使用
Gson.fromJson()
反序列化,但我需要事先知道类型。好的,Gson已经可以直接从流中准备好了(也就是说,您不需要在流中发送消息长度)。您可以使用类型适配器处理多态序列化/反序列化。如上所述。@Perception感谢链接帮助我解决了问题。这里的协议是什么。Perception已经回答了我的问题?Perception应该将他的评论作为一个答案发布,你接受它。
MessageBase message = readMessage(myReader);
if (message instance of RequestMessage)
{
RequestMessage request = (RequestMessage) message;
// do something here
}