[英]Pojo classes to serialize to json
I want to display my Json response as below.我想如下显示我的 Json 响应。 Below are my classes.
下面是我的课。 Class name (transaction_status) should not come in json response, is their any way we can achieve this any suggestion experts?
Class 名称(transaction_status)不应该出现在 json 响应中,他们有什么方法可以实现这一点吗?
//Expected json response
{
"view": {
"payment_transaction": [
{
"status": "Delivered",
"reason": "XXX",
"event": [
{
"status": "Delivered",
"reason": "XXX"
}
}
]
}
]
}
}
// but it is coming as below
{
"view": {
"payment_transaction": [
{
"status": "Delivered", // 1)Coming correctly
"reason": "XXX", // 2)Coming correctly
"event": [
{
"transaction_status": { // don't want to this field to come
"status": "Delivered",
"reason": "XXX"
}
}
]
}
]
}
}
public class View {
public static class PaymentExternalView {
@SerializedName("status")
private String transactionStatus;
@SerializedName("reason")
private String transactionStatusReason;
private transient TransactionStatus tranStatus;
public TransactionStatus getTranStatus() {
return tranStatus;
}
public void setTranStatus(TransactionStatus tranStatus) {
this.tranStatus = tranStatus;
}
public String getTransactionStatus() {
this.transactionStatus = tranStatus.getStatus().toString();
return transactionStatus;
}
public void setTransactionStatus(String transactionStatus) {
this.transactionStatus = transactionStatus;
}
public String getTransactionStatusReason() {
this.transactionStatusReason = tranStatus.getReason().toString();
return transactionStatusReason;
}
public void setTransactionStatusReason(String transactionStatusReason) {
this.transactionStatusReason = transactionStatusReason;
}
}
public static class Event {
private TransactionStatus transactionStatus;
//@SerializedName("status") // If I specify these variables error is coming as Multiple json fileds
//private String transactionStatus;
//@SerializedName("reason")
//private String transactionStatusReason;
public TransactionStatus getTransactionStatus() {
this.transactionStatus = tranStatus.t
return transactionStatus;
}
public void setTransactionStatus(TransactionStatus status) {
this.transactionStatus = status;
}
/**
public String getTransactionStatus() {
this.transactionStatus = tranStatus.getStatus().toString();
return transactionStatus;
}
public void setTransactionStatus(String transactionStatus) {
this.transactionStatus = transactionStatus;
}
public String getTransactionStatusReason() {
this.transactionStatusReason = tranStatus.getReason().toString();
return transactionStatusReason;
}
public void setTransactionStatusReason(String transactionStatusReason) {
this.transactionStatusReason = transactionStatusReason;
}
**/
}
}
public class TransactionStatus {
private String status;
private String reason;
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getReason() {
return reason;
}
public void setReason(String reason) {
this.reason = reason;
}
}
I cannot modify my TransactionStatus class as this used in many other places.我无法修改我的 TransactionStatus class ,因为它在许多其他地方都使用过。 In Event class if I tried to set @SerializedName("status") and @SerializedName("reason") error is coming as Multiple json fields.
在事件 class 中,如果我尝试设置 @SerializedName("status") 和 @SerializedName("reason") 错误将作为多个 json 字段出现。 I want to display my status and reason one level up ie want to get rid of "transaction_status" tag in json response.
我想显示我的状态和原因上一级,即想摆脱 json 响应中的“transaction_status”标签。
I guess you're using gson... try with a custom serializer for PaymentExternalView (class containing TransactionStatus member) class.我猜您正在使用 gson ... 尝试使用 PaymentExternalView 的自定义序列化程序(包含 TransactionStatus 成员的类)class。
GsonBuilder gsonBuilder = new GsonBuilder();
JsonSerializer<PaymentExternalView> serializer = ...;
gsonBuilder.registerTypeAdapter(PaymentExternalView.class, serializer);
Gson customGson = gsonBuilder.create();
String customJSON = customGson.toJson(value);
Then create json as desired...然后根据需要创建 json ...
JsonSerializer<PaymentExternalView> serializer = new JsonSerializer<>() {
@Override
public JsonElement serialize(PaymentExternalView src, Type typeOfSrc, JsonSerializationContext context) {
JsonObject json = new JsonObject();
// ...
json.addProperty("status", src.getTransactionStatus().getStatus());
json.addProperty("reason", src.getTransactionStatus().getReason());
return json;
}
};
https://futurestud.io/tutorials/gson-advanced-custom-serialization-part-1 https://futurestud.io/tutorials/gson-advanced-custom-serialization-part-1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.