Как разобрать 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 с открытым исходным кодом.

Другие вопросы по тегам