2016-09-05 2 views
0

Happy Labor Day Jeder.Coldfusion, die JSON-Daten zurückgibt

Der Versuch, verwertbare Daten aus der JSON-Datei zurückzugeben.

Das ist, was ich bisher habe:

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

Welcher dies zurück:

JSON OUTPUT

Wie kann ich nur Spalte 9 und 10 in nutzbar etwas.

Mein Endziel wäre ein Drop-Down-Feld von Daten und es wird die Gewinnzahlen für diese Daten zurückgeben.

Vielen Dank für Ihre Zeit.

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

ich versuchte, diese durch die Array Schleife aber ich habe den Fehler „Objekt der Typklasse coldfusion.runtime.Struct nicht als Array verwendet werden kann“.

Ich habe eine wirklich harte Zeit lernen Datenverarbeitung in CF kann jemand gute Tutorials empfehlen. Wurde auch gedacht, einen Online-Tutor zu bekommen. Bei ColdFusion scheinen sie jedoch nicht so häufig zu sein. Jede Beratung wäre willkommen.

+3

'pbdata.data [1] [9]' gibt Ihnen den Wert 9 –

+0

Können Sie einen Code schreiben, um uns zu zeigen, was Sie versucht haben? –

+1

(Bearbeiten) Die Fehlermeldung bedeutet genau das, was es sagt 'pbdata' ist eine Struktur, kein Array. RE: * .. Was gibt das zurück * Nicht genau. pbdata ist eine Struktur, die mehrere Schlüssel enthält. Dump die Schlüsselnamen ''. Wie in Ihrem Screenshot gezeigt, heißt der gewünschte Schlüssel "Daten". Sein Wert ist ein Array. Schleife durch * das * Element dh 'pbdata.data', nicht die übergeordnete Struktur dh' pbdata'. – Leigh

Antwort

1

ändern diese:

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

Um dies:

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

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

Und Sie werden wahrscheinlich sehen, was Sie suchen. Sie müssen in das Array hinein bohren - es ist ein Mitglied eines Arrays, das Teil einer Struktur ist, die aussieht wie "Daten". Du wirst ein bisschen experimentieren müssen. :)

+1

Danke Mark. Das war es, was ich brauchte, um mich auf den richtigen Weg zu bringen. – Thomas

0

Versuchen Sie diesen Code

<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

Das ist, was ich endlich gefunden habe. Hoffentlich kann es anderen Anfängern wie mir helfen.

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

Die JSON Datei ist ein Array aus einer Anordnung, und es ist im Inneren der Struktur „data“. Man muss also durch das 2d-Array laufen und Elemente [9] und [10] herausziehen, die die Daten und die Gewinnzahlen sind.