有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java为什么要在对象前后添加引号?是真的吗

我想用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\"}"
}

如果您注意到,双引号是在数据对象之后打开的,而在对象末尾的双引号是关闭的。我如何修复这种情况,或者这种情况是真实的?我正在使用ToStringBuilder类

这是DataReqType。类别:

public String toStringValidate(){
        return new ToStringBuilder(this, ToStringStyle.JSON_STYLE).append("brandCode", brandCode).append("isNotAutoSendIYS", isNotAutoSendIYS).append("consentData", consentData.toStringValidate()).toString();
    }

这是数据。类别:

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();
    }

共 (1) 个答案

  1. # 1 楼答案

    当你这样做的时候:

    .append("consentData", consentData.toStringValidate())
    

    append而言,所附加的值是一个字符串,因此必须进行转义。没有办法知道它实际上是一个JSON值,可以“原始”插入

    如果你想要JSON,我会使用一个真正的JSON库,比如Gson

    如果您只需要一个字符串,该字符串对于成员具有不同值的对象是唯一的,您可以执行以下操作:

    public String toStringValidate() {
                return new ReflectionToStringBuilder(this, new RecursiveToStringStyle() {
                    {
                        setUseIdentityHashCode(false);
                    }
                }).build();
            }