Разбор ColdFusion JSON с нестандартными символами - PullRequest
2 голосов
/ 28 июня 2019

Я могу вызвать API, который возвращает ответ JSON. Я преобразую JSON в переменную CF, но, поскольку Response включает нестандартные символы, я не могу получить доступ к структуре, чтобы получить детали для привязки.

JSON RESPONSE

Мне нужно получить значение публикации вакансии из этой структуры. Не уверен, что лучший способ получить доступ к этим данным.

Спасибо Matt

Ответы [ 2 ]

1 голос
/ 29 июня 2019

Вам потребуется использовать функцию structKey в Coldfusion для прямого доступа к ключу структуры.Между прочим, имя ключа структуры ответа идентично идентификатору ответа.

<!--- first we need a test struct to work with --->
<cfscript>
// init some variables
testStruct=structNew();
resultStruct=structNew();
tempStruct=structnew();

// create our struct keys and set a value
tempStruct['id']='ur:li:simpleJobPostingTask:d230xyz';
tempStruct['jobPosting']='urn:li:JobPosting:1234abc';
tempStruct['status']='SUCCESS';

// build our final fake struct
resultStruct=tempStruct;
testStruct['results']['ur:li:simpleJobPostingTask:d230xyz']=resultStruct;
</cfscript>

Our Test Case

Наше окончательное решение выглядит следующим образом:

<!--- Here is the code you are looking for --->
<cfset firstkey=structKeyArray(testStruct.results)[1] />

<!--- dump the results --->
<cfdump var="#testStruct.results[firstkey]#" />

В конечном итоге ваш код может выглядеть следующим образом:

<cfdump var="#testStruct.results[structKeyArray(testStruct.results)[1]]#">

enter image description here

1 голос
/ 28 июня 2019

Вы можете получить список ключей, используя structKeyList, или вы можете перебрать коллекцию результатов и создать новые переменные по мере необходимости:

<cfset foo = {
    errors = {},
    results = {
        "urn:li:simpleJobPostingTask:some-long-uuid" = {
            id = "urn:li:simpleJobPostingTask:some-long-uuid",
            jobPosting = "urn:li:jobPosting:12345",
            status = "SUCCEEDED"
        }
    },
    statuses = {}
}>

<cfloop collection="#foo.results#" item="key">
    <!--- Do your thing per key --->
</cfloop>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...