本文介紹了如何序列化通過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?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,