问题描述
我想用我的 java 类发送 json 请求,但是当我尝试发送我的 jsonObject 时,我认为传出对象出错了。
这是真实的对象:
{
"brandCode":659599,"isNotAutoSendIYS": "false","consentData": {
"consentDate":"2020-07-20 00:00:00","source":"HS_MESAJ","status":"ONAY","retailerCode":null,"retailerAccess":[],"recipient":"ornek@mysoft.com.tr","recipientType":"BIREYSEL","type":"EPOSTA"
}
}
这是我的 jsonObject 类:
{
"brandCode":659599,"isNotAutoSendIYS":false,"consentData":"{\"consentDate\":\"2020-07-20 00:00:00\",\"source\":\"HS_MESAJ\",\"status\":\"ONAY\",\"retailerCode\":null,\"retailerAccess\":[\"\"],\"recipient\":\"ornek@mysoft.com.tr\",\"recipientType\":\"BIREYSEL\",\"type\":\"EPOSTA\"}"
}
如果你注意到了,consentData 对象后面是双引号,对象末尾的双引号是闭合的。我该如何解决这种情况或这种情况是真的?我正在使用 ToStringBuilder 类。
这个 ConsentDataReqType.class :
public String toStringValidate(){
return new ToStringBuilder(this,ToStringStyle.JSON_STYLE).append("brandCode",brandCode).append("isNotAutoSendIYS",isNotAutoSendIYS).append("consentData",consentData.toStringValidate()).toString();
}
这个 ConsentData.class:
public String toStringValidate(){
return new ToStringBuilder(this,ToStringStyle.JSON_STYLE).append("consentDate",consentDate).append("source",source).append("status",status)
.append("retailerCode",retailerCode).append("retailerAccess",retailerAccess).append("recipient",recipient).append("recipientType",recipientType)
.append("type",type).toString();
}
解决方法
当你这样做时:
.append("consentData",consentData.toStringValidate())
就 append
而言,附加的值是一个字符串,因此必须进行转义。无法知道它实际上是一个 JSON 值并且可以“原始”插入。
如果你想要 JSON,我会使用一个真正的 JSON 库,例如格森。
如果您只需要一个字符串,该字符串对于其成员具有不同值的对象是唯一的,您可以这样做:
public String toStringValidate() {
return new ReflectionToStringBuilder(this,new RecursiveToStringStyle() {
{
setUseIdentityHashCode(false);
}
}).build();
}