Mysql Coldfusion Lucee 4.5.2.018(Linux)-REST服务(无法转换字符串)JSON

Mysql Coldfusion Lucee 4.5.2.018(Linux)-REST服务(无法转换字符串)JSON,mysql,web-services,coldfusion,railo,lucee,Mysql,Web Services,Coldfusion,Railo,Lucee,在REST web服务方面,我没有太多的经验coldfusion web服务。这是非常基本的web服务。请你们告诉我,我做错了什么。这将是很大的帮助 应用服务器:Lucee4.5.2.018Linux 请在下面找到我的代码 组件功能/Web服务 调用web服务 <cfhttp url="http://mydev:8888/rest/Example/hello/name" method="POST" result="res" port="8888" > <c

在REST web服务方面,我没有太多的经验coldfusion web服务。这是非常基本的web服务。请你们告诉我,我做错了什么。这将是很大的帮助

应用服务器:Lucee4.5.2.018Linux

请在下面找到我的代码

组件功能/Web服务

调用web服务

<cfhttp url="http://mydev:8888/rest/Example/hello/name" method="POST"  result="res"  port="8888" >
        <cfhttpparam type="header" name="Accept" value="application/json">
        <cfhttpparam type="formfield" name="firstname" value="Dan">
        <cfhttpparam type="formfield" name="lastname" value="Gates">
</cfhttp>
<cfdump var="#res#">
问题: 定义returnType=struct时,错误字符串无法将字符串[{COLUMNS:[COL1,COL2],数据:[[07777777],[08888]]}]转换为[struct]类型的值

定义returnType=string时,不会出现错误{\COLUMNS\:[\COL1\,\COL2\],\DATA\:[[\0\,\77777\],[\0\,\88888\]}

尝试在循环中获取[数据]值

结果RT

消息:在[string]中找不到匹配的属性[DATA] Stacktrace:中发生错误 /opt/lucee/tomcat/webapps/ROOT/calling.cfm:line 52 50: 51: 52: 53: 54:

首先,由于您要返回查询,因此应将returnType设置为query

若您已经将cffunction的products属性设置为application/json,那个么在返回数据时就不需要执行显式json序列化。ColdFusion将自动为您执行此操作。你可以写:

<cfreturn Qry />
要读取从服务返回的结果,需要对数据进行反序列化。像这样:

<cfdump var="#deserializeJson(res.filecontent)#"> 

您不是将对象序列化为JSON字符串吗?如果是,ReturnType应该是string。您还可以将ReturnType设置为JSON,而不使用SerializeJSON函数。根据CF的版本,您可能还想考虑使用JSOUTILL IM只是做SerialIZEJSON返回字符串吗?我哪儿也不选。我还尝试了返回时间JSON不起作用。谢谢您的回复,我按照您所说的做了,仍然给我字符串输出。让我明确一点,当在CF10应用服务器中运行相同的代码时,它正在工作,发现它正在给我返回arrayi正如你所说的那样仍然给我字符串输出我完全按照Pankaj所描述的修改了你的代码,它与Lucee完美地工作。我怀疑你忘记刷新了,或者是类似的东西。@Leigh我刚刚上传了输出的显示字符串。我想要数据。。。我如何处理单独的数据?我应该使用find函数来选择我需要的值吗?我的输出显示字符串输出仍然错误。当您看到引号被转义为\时,如下所示{\COLUMNS\:…,这通常意味着您错误地对结果编码了两次。您的代码有些不同。如果您应用Pankaj建议的步骤-小心地一次一个,它会起作用。1将returnType设置为Query。2删除serializeJSON并仅返回Qry。如果需要,刷新web服务3反序列化响应字符串DeserializelizeJsonres.filecontent
<cfdump var="#deserializeJson(res.filecontent)#">