这可能是一个“新手”问题,但无论如何。
我正在将 JSON 数据从 netty 客户端发送到 netty 服务器。
但我面临的问题是 netty 服务器无法访问/读取 JSON 数据。
为了访问服务器中的 JSON 数据,我需要一个编码器/解码器。
我对如何编写这个编码器/解码器感到困惑?
有人有任何有用的想法吗?
问问题
9114 次
3 回答
5
使用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)
于 2013-09-17T12:30:14.923 回答
0
在这种情况下,我使用了 JSON-Simple工具包。
于 2013-09-17T10:24:16.490 回答
0
这是一个老问题但是我认为这里的答案不是最好的解决方案。下面的代码更智能地处理了额外的内存消耗
解析:
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);
}
于 2022-01-12T08:49:52.097 回答