Как разобрать JSON, возвращенный в ColdFusion
Я уверен, что это относительно простой вопрос, но я не могу найти простой ответ в Интернете.
У меня есть несколько строк JSON, возвращаемых cfhttp POST с URL-адресом изображения, который я хотел бы проанализировать и отобразить на моей странице ColdFusion:
{
"href": "http://server.arcgisonline.com/arcgis/rest/directories/arcgisoutput/ESRI_StreetMap_World_2D_MapServer/_ags_map734a6ad322dd493e84499d78f027d841.png",
"width": 854,
"height": 493,
"extent": {
"xmin": -8285407.015562119,
"ymin": 4944008.4197687358,
"xmax": -8220129.7934066672,
"ymax": 4981691.8747132765,
"spatialReference": {
"wkid": 102100,
"latestWkid": 3857
}
},
"scale": 288895.27714399656
}
Как я могу сделать значение "href" частью переменной в ColdFusion, и / или потенциально иметь кнопку, связанную с его загрузкой?
РЕДАКТИРОВАТЬ: я забыл упомянуть, что я использую ColdFusion MX - также известный как версия 6 - и, следовательно, почему я не могу использовать DeserializeJSON, перечисленные на странице Adobe
3 ответа
Преобразует строковое представление данных JSON (JavaScript Object Notation) в данные CFML, такие как структура или массив CFML.
https://wikidocs.adobe.com/wiki/display/coldfusionen/DeserializeJSON
Просто проанализируйте ваш результат cfhttp с помощью deserializeJSON()
<cfset getResult = deserializeJSON(result_Variable.filecontent)>
и вы можете получить значение href, используя "#getResult.hreF#"
Я забыл упомянуть, что я использую ColdFusion MX
Ах, это очень большая разница! (Если в тегах не указано иное, большинство людей примут более свежую версию, такую как CF9+).
Поддержка JSON не была добавлена до CF8. Если вы ищете, есть еще несколько старых udf/cfc для обработки JSON. Например:
JSONDecode на http://www.cflib.org/ говорит, что он работает с MX6
JSONUtil.cfc работает с MX7+. Он может работать с MX6 из коробки или с некоторыми изменениями. В этой теме есть описание того, как кодировать с помощью JSONUtil. Декодирование должно быть одинаково простым. Просто создайте экземпляр и вызовите deserializeJSON, то есть:
<!--- not tested ---> <cfset util = createObject("component", "path.to.JSONUtil")> <cfset result = util.deSerializeJSON(yourJSONString)>
Тем не менее, ColdFusion MX немного длинен в зубе и больше не поддерживается. Вы должны серьезно рассмотреть вопрос об обновлении или переходе на движок Railo с открытым исходным кодом.