【问题标题】:ColdFusion 10 REST API: How to parse JSON in body of payloadColdFusion 10 REST API:如何在有效负载主体中解析 JSON
【发布时间】:2013-03-29 18:01:08
【问题描述】:

我正在使用 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”来反序列化“form”类型(即 content-type application/x-www-form-urlencoded),但我找不到任何示例关于如何本机反序列化 JSON 数据。我希望有类似 restargsource="json" 的东西,但那不存在。推荐的方法是什么?

【问题讨论】:

    标签: rest coldfusion coldfusion-10


    【解决方案1】:

    经过大量研究,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) />
    

    【讨论】:

      【解决方案2】:

      你也可以试试

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

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

      【讨论】:

      • 这似乎没有回答问题,即反序列化不序列化。你能详细说明一下吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-27
      • 2016-12-27
      • 1970-01-01
      • 1970-01-01
      • 2016-06-19
      • 2017-02-08
      相关资源
      最近更新 更多