2013-03-29 50 views
3

我正在使用ColdFusion 10的新內置REST風格的Web服務功能。發佈數據時,我希望在請求正文中將有效負載作爲JSON發送。例如:ColdFusion 10 REST API:如何解析有效負載體中的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」,似乎本機支持反序列化「表單」類型(即內容類型應用程序/ x-www-form-urlencoded),但我無法找到任何示例關於如何本地反序列化JSON數據。我希望像restargsource =「json」,但不存在。推薦的方法是什麼?

回答

3

經過大量研究,它看起來並不像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) /> 
0

您也可以嘗試

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

然後用戶#SerializeJSON(VARIABLES.postJSON)#

+0

這似乎並沒有回答這個問題,這是關於* *反序列化序列化沒有。你能詳細說明嗎? – Leigh