[英]Reading JSON data in netty server
这可能是一个“新手”问题,但无论如何。
我正在将 JSON 数据从 netty 客户端发送到 netty 服务器。
但我面临的问题是 netty 服务器无法访问/读取 JSON 数据。
为了访问服务器中的 JSON 数据,我需要一个编码器/解码器。
我对如何编写这个编码器/解码器感到困惑?
有人有任何有用的想法吗?
使用JSON-Simple或GSON进行序列化
然后写回给客户端:
String jsonPayload = ...;
ByteBuf buffer = Unpooled.copiedBuffer(jsonPayload, CharsetUtil.UTF_8));
ctx.write(buffer);
如果是HTTP服务器,请不要忘记将缓冲区包装在DefaultHttpContent
!
ctx.write(new DefaultHttpContent(buffer));
为了获得灵感,请看以下示例:
编辑:
如果您需要从请求中读取jsonPayload,可以这样做:
String jsonPayload = bytebuf.content().toString(CharsetUtil.UTF_8)
在这种情况下,我使用了JSON-Simple工具箱。
这是一个老问题但是我认为这里的答案不是最好的解决方案。 下面的代码更智能地处理了额外的内存消耗
解析:
public T parse(ByteBuf byteBuf) throws Exception {
InputStream byteBufInputStream = new ByteBufInputStream(byteBuf);
return objectMapper.readValue(byteBufInputStream, klass);
}
public ByteBuf byteBuf(T value) throws Exception {
byte[] bytes = objectMapper.writeValueAsBytes(value);
return Unpooled.wrappedBuffer(bytes);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.