2

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

4

3 回答 3

5

使用JSON-SimpleGS​​ON进行序列化

然后用这个写回客户端:

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 回答