2016-09-05 5 views
0

Счастливый День Труда Каждый.Coldfusion возвращает данные JSON

Пытается вернуть полезные данные из файла JSON.

Это то, что я до сих пор:

<cfhttp url="https://data.ny.gov/api/views/d6yy-54nr/rows.json?accessType=DOWNLOAD" method="get" result="httpResp" timeout="120"> 
<cfhttpparam type="header" name="Content-Type" value="application/json" /> 
</cfhttp> 
<cfset pbdata=deserializeJSON(httpResp.filecontent)> 
<cfdump var="#pbdata#"> 

Который возвращает это:

JSON OUTPUT

Как я могу просто получить колонку 9 и 10 в то полезное.

Моей конечной целью было бы иметь выпадающее поле дат, и оно вернет выигрышные номера для этих данных.

Спасибо за ваше время.

<cfhttp url="https://data.ny.gov/api/views/d6yy-54nr/rows.json?accessType=DOWNLOAD" method="get" result="httpResp" timeout="120"> 
<cfhttpparam type="header" name="Content-Type" value="application/json" /> 
</cfhttp> 
<cfset pbdata=deserializeJSON(httpResp.filecontent)> 
<cfoutput> 
<cfloop array="#pbdata#" index="i"> 
      <cfloop array="#i#" index="k"> 
       #i[k]# 
      </cfloop> 
      <br/><br/> 
</cfloop> 

     </cfoutput> 

Я попытался это в цикле через массив, но я получаю сообщение об ошибке «Объект класса типа coldfusion.runtime.Struct не может быть использован как массив».

У меня очень тяжело изучается обработка данных в CF, кто-нибудь может рекомендовать хорошие учебные пособия. Также думал, что он получает онлайн-репетитора. Но они не кажутся обычными для ColdFusion. Любые рекомендации будут оценены.

+3

'pbdata.data [1] [9]' даст вам значение 9 –

+0

Можете ли вы разместить код, чтобы показать нам, что вы попробовали? –

+1

(Edit) Сообщение об ошибке означает, что именно 'pbdata' является структурой, а не массивом. RE: * .. Что возвращает это * Не совсем. pbdata - это структура, содержащая несколько ключей. Дамте имена ключей ''. Как показано на снимке экрана, нужный вам ключ называется «data». Его значение представляет собой массив. Прокрутите * этот * элемент, то есть 'pbdata.data', а не родительскую структуру, то есть' pbdata'. – Leigh

ответ

1

Изменить это:

<cfloop array="#pbdata#" index="i"> 
      <cfloop array="#i#" index="k"> 
       #i[k]# 
      </cfloop> 
      <br/><br/> 
</cfloop> 

Для этого:

<cfloop array="#pbdata.data[1]#" index="i"> 

       #pbdata.data[1][i]# 
      <br/><br/> 
</cfloop> 

И вы, вероятно, увидеть то, что вы ищете. Вы должны сверлить в массив - это элемент массива, который является частью структуры, которая выглядит как «данные». Вам придется немного поэкспериментировать. :)

+1

Спасибо, Марк. Это было то, что мне нужно, чтобы заставить меня на правильном пути. – Thomas

0

Попробуйте этот код

<cfhttp url="https://data.ny.gov/api/views/d6yy-54nr/rows.json?accessType=DOWNLOAD" method="get" result="httpResp" timeout="120"> 
    <cfhttpparam type="header" name="Content-Type" value="application/json" /> 
</cfhttp> 
<cfset pbdata=deserializeJSON(httpResp.filecontent)> 
<cfset winDate = pbdata.data[1][9]> 
<cfset winnerList = pbdata.data[1][10]> 
<cfoutput> 
    Winner for the #winDate# are #winnerList# 
</cfoutput> 
0

Это то, что я, наконец, придумал. Надеясь, он может помочь другим новичкам, таким как я.

<cfset pbdata=deserializeJSON(httpResp.filecontent)> 
<cfoutput> 

<cfloop from="1" to="#arrayLen(pbdata.data)#" index="i"> 


#i#: #pbdata.data[i][9]# : #pbdata.data[i][10]#<br /> 
</cfloop> 

</cfoutput> 

Файл JSON представляет собой массив массива и находится внутри структуры «данные». Таким образом, вам нужно пройти через массив 2d и вытащить элементы [9] и [10], которые являются датами и выигрышными номерами.

Смежные вопросы