为什么 ToStringBuilder(ToStringStyle.JSON_STYLE) 在对象前后添加引号?是真的吗
Why ToStringBuilder(ToStringStyle.JSON_STYLE) adding quotes before and after object? is it True
我想用我的 java classes 发送 json 请求但是当我尝试发送我的 json 对象时,我认为传出对象出错了。
这是真实的对象:
{
"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"
}
}
这是我的 json来自 class 的对象:
{
"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 class.
这个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值,可以插入'raw'.
如果你想要 JSON,我会使用真正的 JSON 库,例如Gson.
如果您只需要一个字符串,该字符串对于其成员具有不同值的对象是唯一的,您可以这样做:
public String toStringValidate() {
return new ReflectionToStringBuilder(this, new RecursiveToStringStyle() {
{
setUseIdentityHashCode(false);
}
}).build();
}
我想用我的 java classes 发送 json 请求但是当我尝试发送我的 json 对象时,我认为传出对象出错了。
这是真实的对象:
{
"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"
}
}
这是我的 json来自 class 的对象:
{
"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 class.
这个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值,可以插入'raw'.
如果你想要 JSON,我会使用真正的 JSON 库,例如Gson.
如果您只需要一个字符串,该字符串对于其成员具有不同值的对象是唯一的,您可以这样做:
public String toStringValidate() {
return new ReflectionToStringBuilder(this, new RecursiveToStringStyle() {
{
setUseIdentityHashCode(false);
}
}).build();
}