How to serialise a POJO to be sent over a Java RSocket?(如何序列化通过Java RSocket发送的POJO?)
问题描述
我正在尝试通过RSocket请求流发送POJO:
import java.io.Serializable;
class GreetingRequest implements Serializable {
private String name;
public GreetingRequest() {}
public GreetingRequest(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
如果我要发送字符串,我可以这样做:
ByteBuf data = ByteBufAllocator.DEFAULT.buffer().writeBytes("Hello".getBytes());
socket.requestStream(DefaultPayload.create(data, metadata))
.map(Payload::getDataUtf8)
.toIterable()
.forEach(System.out::println);
但是我如何将我的POJO序列化?
这是我尝试使用不起作用的implementation group: 'org.apache.commons', name: 'commons-lang3', version: '3.12.0'
:
GreetingRequest pojo = new GreetingRequest("Davide");
ByteBuf data = SerializationUtils.serialize(pojo);
socket.requestStream(DefaultPayload.create(data, metadata))
.map(Payload::getDataUtf8)
.toIterable()
.forEach(System.out::println);
推荐答案
我建议您使用GSON转换器。它可以帮助您将Java类转换为JSON字符串。然后您可以像处理简单文本一样使用字符串。
您可以导入依赖项:
dependencies {
implementation 'com.google.code.gson:gson:2.8.7'
}
然后,可以使用jsonschema2pojo将JSON:
{ "name": "Test" }
添加到类似This:
的类 package com.example;
import javax.annotation.Generated;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
public class GreetingRequest {
@SerializedName("name")
@Expose
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
完成所有操作后,您可以在Java中执行以下操作:
Gson converter = new Gson();
GreetingsRequest request = new GreetingRequest();
request.setName("Test");
String greetingsJSON = converter.toJson(request);
然后您仍然可以按如下方式发送JSON字符串:
ByteBuf data = ByteBufAllocator.DEFAULT.buffer().writeBytes(greetingsJSON.getBytes());
socket.requestStream(DefaultPayload.create(data, metadata))
.map(Payload::getDataUtf8)
.toIterable()
.forEach(System.out::println);
数据转换:
- JSON对象-Java类
- 数组列表
帮助链接:
这是您需要在Java中包含(包含教程)的库:GSON Converter Git
这是一个JSON到Class Online转换器:Jsonschema2pojo generator
这篇关于如何序列化通过Java RSocket发送的POJO?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何序列化通过Java RSocket发送的POJO?
基础教程推荐
- 如何使用 Eclipse 检查调试符号状态? 2022-01-01
- 由于对所需库 rt.jar 的限制,对类的访问限制? 2022-01-01
- 如何使用 Stream 在集合中拆分奇数和偶数以及两者的总和 2022-01-01
- 如何在不安装整个 WTP 包的情况下将 Tomcat 8 添加到 Eclipse Kepler 2022-01-01
- Java 中保存最后 N 个元素的大小受限队列 2022-01-01
- 如何强制对超级方法进行多态调用? 2022-01-01
- Spring Boot Freemarker从2.2.0升级失败 2022-01-01
- 在螺旋中写一个字符串 2022-01-01
- 首次使用 Hadoop,MapReduce Job 不运行 Reduce Phase 2022-01-01
- 如何对 HashSet 进行排序? 2022-01-01