您好我正在尝试从我的一个REST端点序列化一系列CFC。我在Adobe帮助中找到了这个Example: Array of CFC Serialization,这正是我想要做的(我可以在必要时发布一些代码)但是当我尝试使用returnType="myCFC[]"
时它失败了:
“消息”:“数组元素类型不匹配”
奇怪的是,如果我实例化同一个对象并从.cfm文件调用该方法,cfdump会按预期显示包含数据的对象数组。但是从我的AJAX调用中,对象的属性值都是null。但是,如果我使用return serializeJSON(myArrayOfCFCs)
,则属性具有数据。但我不想这样做,因为它会否定内容协商的使用。
只是好奇是否有人让这个工作。
更新
<cffunction name="getPatient" access="remote" httpmethod="GET" returntype="Patient[]" produces="text/json" restpath="/{PatientId}">
<cfargument name="PatientId" type="numeric" required="true" restargsource="Path" />
<cfset local.response = ArrayNew(1) />
<cfset local.patient = getPatientGatewayObject().getPatient(PatientId)>
<cfset local.patientObject = createObject("component", "Patient").init(argumentCollection=queryRowToStruct(local.patient)) />
<cfset arrayAppend(local.response, local.patientObject) />
<cfreturn local.response />
</cffunction>
这样可行,但最终不是我想要的:
<cffunction name="getPatient" access="remote" httpmethod="GET" returntype="Patient" produces="text/json" restpath="/{PatientId}">
<cfargument name="PatientId" type="numeric" required="true" restargsource="Path" />
<cfset local.response = ArrayNew(1) />
<cfset local.patient = getPatientGatewayObject().getPatient(PatientId)>
<cfset local.patientObject = createObject("component", "Patient").init(argumentCollection=queryRowToStruct(local.patient)) />
<cfset arrayAppend(local.response, local.patientObject) />
<cfreturn serializeJSON(local.response) />
</cffunction>