【发布时间】:2021-07-14 22:16:12
【问题描述】:
我为我的 Salesforce 实例构建了一个休息集成。
当我发送固定的 json(没有变量值)时,它可以工作。但是我正在做一个概念验证,我需要将一些变量传递给 json,当我这样做时,什么也没有发生。
我认为我正在尝试做的事情是不可能的(我正在尝试的方式),但我没有找到任何可以帮助我理解如何将变量传递到 json 的材料。
然而,我所做的是:
我在 HTML 正文中创建了一个消息字段。
<div class="wrap-input100 validate-input" data-validate = "Campo obrigatório">
<span class="label-input100">Sua mensagem</span>
<textarea class="input100" name="message" placeholder="Deixe aqui sua mensagem"></textarea>
<span class="focus-input100"></span>
</div>
然后,我检索该字段的值,并将其编码为 json
$mensagem = $_GET['message'];
$mens_json = json_encode($mensagem);
最后,我正在寻找这个变量 (["$mens_json"]) 并将其放入一个 json 参数中。
$params = ("{\"Fields\":[{\"Name\":\"requestDefinitionId\",\"Value\":\"a3Hf0000000lTNaEAM\"},{\"Name\":\"client\",\"Value\":\"0053j00000A7rWLAAZ\"}],\"Answers\":[{\"QuestionId\":\"a3Df0000000qI63EAE\",\"Values\":[\"Reclama\u00e7\u00e3o\"]},{\"QuestionId\":\"a3Df0000000qHvsEAE\",\"Values\":[\"$mens_json\"]},{\"QuestionId\":\"a3Df0000000qHwREAU\",\"Values\":[\"Web\"]}]}");
适用于 Postman 的主体与我保存在我的 php 代码中的主体相同。只是为了尝试整合。现在我将尝试使用变量创建 json。
{
"Fields": [
{
"Name": "requestDefinitionId",
"Value": "a3Hf0000000lTNaEAM"
},
{
"Name": "client",
"Value": "0053j00000A7rWLAAZ"
}
],
"Answers": [
{
"QuestionId": "a3Df0000000qI63EAE",
"Values": [ "Reclamação" ]
},
{
"QuestionId": "a3Df0000000qHvsEAE",
"Values": [ "Solicitação de Serviço aberta por qualquer integração web" ]
},
{
"QuestionId": "a3Df0000000qHwREAU",
"Values": ["Web"]
}
]
}
从这里编辑 修改后json_encode生成的json为:
{ "Fields": [ { "Name": "requestDefinitionId", "Value": "a3Hf0000000lTNaEAM" }, { "Name": "client", "Value": "0053j00000A7rWLAAZ" } ], "Answers": [ { "QuestionId": "a3Df0000000qI63EAE", "Values": [ "Reclamação" ] }, { "QuestionId": "a3Df0000000qHvsEAE", "Values": [ "RODRIGO BARCAT" ] }, { "QuestionId": "a3Df0000000qHwREAU", "Values": [ "Web" ] } ] }array(2) { ["Fields"]=> array(2) { [0]=> array(2) { ["Name"]=> string(19) "requestDefinitionId" ["Value"]=> string(18) "a3Hf0000000lTNaEAM" } [1]=> array(2) { ["Name"]=> string(6) "client" ["Value"]=> string(18) "0053j00000A7rWLAAZ" } } ["Answers"]=> array(3) { [0]=> array(2) { ["QuestionId"]=> string(18) "a3Df0000000qI63EAE" ["Values"]=> array(1) { [0]=> string(12) "Reclamação" } } [1]=> array(2) { ["QuestionId"]=> string(18) "a3Df0000000qHvsEAE" ["Values"]=> array(1) { [0]=> string(14) "RODRIGO BARCAT" } } [2]=> &array(2) { ["QuestionId"]=> string(18) "a3Df0000000qHwREAU" ["Values"]=> array(1) { [0]=> string(3) "Web" } } } }
我可以用来与 salesforce 集成的 json 如下所示:
("{\"Fields\":[{\"Name\":\"requestDefinitionId\",\"Value\":\"a3Hf0000000lTNaEAM\"},{\"Name\":\"client\",\"Value\":\"0053j00000A7rWLAAZ\"}],\"Answers\":[{\"QuestionId\":\"a3Df0000000qI63EAE\",\"Values\":[\"Reclama\u00e7\u00e3o\"]},{\"QuestionId\":\"a3Df0000000qHvsEAE\",\"Values\":[\"Solicita\u00e7\u00e3o de Servi\u00e7o aberta por qualquer integra\u00e7\u00e3o web\"]},{\"QuestionId\":\"a3Df0000000qHwREAU\",\"Values\":[\"Web\"]}]}");
我没有发现它发生的原因,或者我如何生成 json 作为我在上面粘贴的第二个。
谢谢
【问题讨论】:
-
不要创建自己的 json,你总会遇到问题。相反,创建一个对象或数组,然后使用json_encode 来制作一个正确封装的字符串。
-
我试过很多次,但总是出错。我将使用原始 json 正文更新帖子。但是我无法以正确的格式组装一个数组。我最后所做的是获取正文(我现在将其放在我的帖子中)并将其转换为您在变量 $params 中看到的结果。
-
如果是原始的 JSON 体,那么你需要解码然后插入它,否则它会被双重编码
-
我想我明白了,但这就是困难所在。该主体按预期工作,但具有固定数据。根据我的表格,我无法创建一个具有动态 json 的数组。谢谢你,艾恩伯
-
我已经编辑了我的帖子并添加了新信息,开始于: EDITED FROM HERE 更改后,由 json_encode 生成的 json 是。你能帮我在编辑时如何格式化 json 吗?