2013-03-29 6 views
3

J'utilise la nouvelle fonction de services Web RESTful de ColdFusion 10. Lors de la publication de données, je souhaite envoyer la charge en tant que JSON dans le corps de la demande. Par exemple:API REST ColdFusion 10: Comment analyser JSON dans le corps de la charge utile

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"} 

Une fois ces données est affichée via l'API, comment dois-je analyser et désérialiser les données JSON sur le serveur? Le service REST de ColdFusion a-t-il un moyen intégré de le faire? Il semble qu'il existe un support natif pour désérialiser le type "form" (ie application de type content/x-www-form-urlencoded) en plaçant l'attribut restargsource sur cfargument sur "form", mais je ne trouve pas d'exemples sur la façon de désérialiser les données JSON nativement. J'espérais quelque chose comme restargsource = "json", mais cela n'existe pas. Quelle est la manière recommandée de faire ceci?

Répondre

3

Après de nombreuses recherches, il ne semble pas que le gestionnaire de requêtes de l'API REST de ColdFusion 10 puisse analyser les requêtes JSON automatiquement pour nous. Nous devons le faire manuellement comme suit:

<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

Vous pouvez également essayer

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

#

+0

puis #SerializeJSON utilisateur (VARIABLES.postJSON) Cela ne semble pas répondre à la question, qui est d'environ * désérialisation * pas sérialisation. Peux-tu élaborer? – Leigh

Questions connexes