gpt4 book ai didi

java - 字符串到 Json 转换器给出无效的 Json 值

转载 作者:行者123 更新时间:2023-12-01 20:51:56 27 4
gpt4 key购买 nike

嗨,我的 Json 请求中有一个字段,它的值是 Json。所以我正在将字符串转换为 Json 应用转义字符。同样,这个转换后的字符串将通过对象到 Json 转换器,并将其转换为无效的 Json。

我需要什么:

"attributes" : {"type" : "CARES_Diagnosis_Survey__c", "referenceId" : "ref1"},

我在做什么:

public static final String ATTRIBUTES_BEGIN = "{\"type\"" +":"+ "\"CARES_Diagnosis_Survey__c\""+","+"\"referenceId\"" +":"+ "\"ref";
public static final String ATTRIBUTES_END = "\"}";
String attributes = ServiceConstants.ATTRIBUTES_BEGIN + ServiceConstants.ATTRIBUTES_END;
salesForceDiagnosisObject.setAttributes(attributes);

This is salesForceDiagnosisObject is going through Object to Json transformer in spring integration

<!-- turn to json -->
<int:object-to-json-transformer id="sfdcDiagnosisOutboundToJsonTransformer"
input-channel="sfdcDiagnosisObjectToJsonConverter"
output-channel="sfdcDiagnosisOutboundToJson"
/>

我得到了什么:

"attributes":"{\"type\":\"CARES_Diagnosis_Survey__c\",\"referenceId\":\"ref\"}"

我想要得到什么:

"attributes" : {"type" : "CARES_Diagnosis_Survey__c", "referenceId" : "ref1"}

我尝试在此字段上使用 JsonIgnore 来跳过序列化,但如果我这样做,它会完全忽略该字段。请帮助我。

最佳答案

您可能以错误的方式执行此操作,您没有将字符串映射到 JSON,而是将对象映射到 JSON。

因此,如果您希望 salesForceDiagnosisObject 序列化为包含如下属性的 JSON:

{ 
"key1" : "value1",
"key2" : "value2",
....
"attributes" : {
"type" : "CARES_Diagnosis_Survey__c",
"referenceId" : "ref1"
}

您的 salesForceDiagnosisObject 类不能:

class SalesForceDiagnosisObject {
String key1;
String key2;
String attributes;
....
}

它一定是这样的:

class SalesForceDiagnosisObject {
String key1;
String key2;
DiagnosisAttribute attributes;
....
}

你的属性应该像这样设置:

class DiagnosisAttribute{
String type;
String referenceId;
...
}

DiagnosisAttribute da = new DiagnosisAttribute();
da.setType("CARES_Diagnosis_Survey__c");
da.setReferenceId("ref1");

salesForceDiagnosisObject.setAttributes(da);

关于java - 字符串到 Json 转换器给出无效的 Json 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43218879/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com