如何解决为什么 ToStringBuilder(ToStringStyle.JSON_STYLE) 在对象前后添加引号?是真的吗
我想用我的 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();
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。