ColdFusion 10 REST API:如何在有效负载体中解析JSON

时间:2013-03-29 18:01:09

标签: rest coldfusion coldfusion-10

我正在使用ColdFusion 10的新内置RESTful Web服务功能。发布数据时,我希望将有效负载作为JSON发送到请求正文中。例如:

PUT https://mycompany.com/rest/v1.0/widget/261469 HTTP/1.1
Host: mycompany.com
Connection: keep-alive
Content-Length: 13
Content-Type: application/json

{"foo":"bar"}

通过API发布此数据后,我应该如何解析和反序列化服务器上​​的JSON数据? ColdFusion REST服务是否有内置的方法来执行此操作?似乎有原生支持反序列化"形式"通过将cfargument上的restargsource属性设置为" form"来输入类型(即内容类型application / x-www-form-urlencoded),但是我无法找到有关如何反序列化JSON的任何示例本地数据。我希望像restargsource =" json"这样的东西,但那并不存在。建议的方法是什么?

2 个答案:

答案 0 :(得分:5)

经过大量研究后,看起来ColdFusion 10的REST API请求处理程序无法为我们自动解析JSON请求。我们需要手动执行以下操作:

<cfset var json = ToString(GetHttpRequestData().content) />
<cfif !IsJSON(json)>
    <cfthrow errorCode="400" type="ArgumentException" message="#"Invalid JSON string: " & json#" />
</cfif>

<cfset var jsonObject = DeserializeJSON(json) />

答案 1 :(得分:0)

您也可以尝试

VARIABLES.postJSON = StructNew();
StructInsert(VARIABLES.postJSON, 'parameter1','xxx');

然后是用户#SerializeJSON(VARIABLES.postJSON)#