要序列化为json的java Pojo类
我想显示我的Json响应,如下所示。下面是我的课程。类名(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;
}
}
我不能修改TransactionStatus类,因为它在许多其他地方都使用。在事件类中,如果我试图设置@SerializedName(“状态”)和@SerializedName(“原因”)错误将作为多个json字段出现。我想把我的状态和原因显示一个级别,即想去掉json响应中的“transaction_status”标记
# 1 楼答案
我猜你在用gson。。。尝试使用PaymentExternalView(包含TransactionStatus成员的类)类的自定义序列化程序
然后根据需要创建json
https://futurestud.io/tutorials/gson-advanced-custom-serialization-part-1