微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么 ToStringBuilder(ToStringStyle.JSON_STYLE) 在对象前后添加引号?是真的吗

如何解决为什么 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 举报,一经查实,本站将立刻删除。