繁体   English   中英

在 netty 服务器中读取 JSON 数据

[英]Reading JSON data in netty server

这可能是一个“新手”问题,但无论如何。
我正在将 JSON 数据从 netty 客户端发送到 netty 服务器。
但我面临的问题是 netty 服务器无法访问/读取 JSON 数据。
为了访问服务器中的 JSON 数据,我需要一个编码器/解码器。
我对如何编写这个编码器/解码器感到困惑?
有人有任何有用的想法吗?

使用JSON-SimpleGSON进行序列化

然后写回给客户端:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM