Zoho CRM使用JSON/Coldfusion插入记录

Zoho CRM使用JSON/Coldfusion插入记录,json,coldfusion,zoho,Json,Coldfusion,Zoho,在最终解决了Zoho OAuth身份验证之后,我现在面临着在尝试插入新记录时调试错误代码的问题 <cfsavecontent variable="JSONData"> { "data": { "Last_Name": "Smith", "First_Name": "John", "Email": "john@smi

在最终解决了Zoho OAuth身份验证之后,我现在面临着在尝试插入新记录时调试错误代码的问题

<cfsavecontent variable="JSONData">
{
  "data": { 
    "Last_Name": "Smith",
"First_Name": "John",
    "Email": "john@smith.com",
    "Phone": "0123456789",
    "Lead_Source": "PPC",
"Build_Cost_text": "50",
"Estimated_Sales_Value": "100",
"Stage_of_Build_Work": "Not Started",
"Work_Starting_Date_text": "01/06/2021",
"Number_of_Units": "1",
"Address_of_Development": "123 Any Street",
"Gross_floor_area_m2": "100",
"Development_Use": "Self Build",
"Please_share_any_additional_information": "Just testing stuff",
    "Company": "Smith Widgets"
      }
  }
</cfsavecontent>


<cfhttp method="POST" url="https://www.zohoapis.com/crm/v2/Leads" result="zohopostresult">
<cfhttpparam type="header" name="Authorization" value="Zoho-oauthtoken #gettoken.access_token#">
<cfhttpparam type="header" name="content-type" value="application/json" />
<cfhttpparam type="body" value="#JSONData#" />
</cfhttp>

如果我使用cfdump/deserializeJSon来检查'JSONData'变量,它的输出就很好。我已经看了一整天了,所以我很可能错过了一些正盯着我看的东西。

为了理智起见,不要使用
,使用

所以你需要发送一个数组,而不是一个对象。我不知道Zoho的API定义,但我猜也是

<cfset payload = {
    "data": [{
        ...
    }]
}>



你确实是对的-我缺少括号(在“数据”之后,而不是之前)。我的原始代码在我添加了这些代码之后就可以工作了,但是这个替代方法也可以工作。@Lee是的,它们是完全相同的方法,真的。与
相比,使用本机ColdFusion数据结构和-syntax+
SerializeJSON()
的变体更易于维护,更不容易出错。
<cfset payload = {
    "data": {
        "Last_Name": "Smith",
        "First_Name": "John",
        "Email": "john@smith.com",
        "Phone": "0123456789",
        "Lead_Source": "PPC",
        "Build_Cost_text": "50",
        "Estimated_Sales_Value": "100",
        "Stage_of_Build_Work": "Not Started",
        "Work_Starting_Date_text": "01/06/2021",
        "Number_of_Units": "1",
        "Address_of_Development": "123 Any Street",
        "Gross_floor_area_m2": "100",
        "Development_Use": "Self Build",
        "Please_share_any_additional_information": "Just testing stuff",
        "Company": "Smith Widgets"
    }
}>

<cfdump var="#payload#">

<cfhttp method="POST" url="https://www.zohoapis.com/crm/v2/Leads" result="zohopostresult">
  <cfhttpparam type="header" name="Authorization" value="Zoho-oauthtoken #gettoken.access_token#">
  <cfhttpparam type="header" name="content-type" value="application/json" />
  <cfhttpparam type="body" value="#SerializeJSON(payload)#" />
</cfhttp>
"expected_data_type":"jsonarray"
<cfset payload = {
    "data": [{
        ...
    }]
}>
<cfset payload = [{
    "data": {
        ...
    }
}]>