ODataを使用して新しく更新されたRESTful APIレスポンスの結果を使用して配列を消費しロードする既存のCF8アプリケーションを更新しようとしています。ColdFusion 8:ODataレスポンスをアレイに変換する
ここで問題のコードです... ODataのJSON文字列で応答APIからデータを引っ張った後、コードはこれがうまく働いていたループに
<!--- Returned data is in json format so must change to an array. --->
<cfset local.result = deserializeJSON(myResult)>
<!--- Reference the array collection of categories --->
<cfset local.collection = local.result>
<!--- Initialize the output object --->
<cfset local.output = arrayNew(1)>
<!--- Loop over the collection --->
<cfloop from="1" to="#arrayLen(local.collection)#" index="local.arrayIndex">
...
をINITS最後の行に吹きます
[
{
"@odata.context": "string",
"value": [
{
"id": 1,
"name": "Blah, blah"
}
]
}
]
:
[
{
"id": 1,
"name": "Blah, blah",
}
]
導入唯一の変更が更新JSONレスポンスです:前のJSONレスポンスを使用して
私は何か基本的なものが欠けていると確信していますが、私はCFでこれまでに作業したことがないので、ここは新しい領域です。
思考?
ありがとうございます!
更新日: 詳細についてはお答えできません。
:上記のアップデートで利用できるループを開始Error Occurred While Processing Request
Object of type class coldfusion.runtime.Struct cannot be used as an array
The error occurred in <path to file> line 97
「ライン97」されています
<!--- Loop over the collection --->
<cfloop from="1" to="#arrayLen(local.collection)#" index="local.arrayIndex">
<!--- Create a reference to the array element --->
<cfset local.objectInstance = local.collection[local.arrayIndex]>
<!--- Create a new object reference --->
<cfset local.thisObject = structNew()>
<!--- Seed the object properties --->
<cfset local.thisObject.categoryId = local.objectInstance.id>
<cfset local.thisObject.categoryName = local.objectInstance.name>
<!--- Place the new object in the collection array --->
<cfset arrayAppend(local.output, duplicate(local.thisObject))>
</cfloop>
そして、ここで私が受けてるのエラーです:ここではアプリは、現在の応答を使用してみましょう
私はMiguelが提供している "newJSON"アプローチを使用しようとしました。(ありがとうございました!)、残念ながら、私は同じエラーに遭遇しています。
もう一度おねがいします!あなたはまだ、あなたが何か間違ったことをしたエラーを取得している場合は、ユーザーの後 リッチ
FWIW、上記〔と正常に動作しますCF10](http://trycf.com/gist/fc4a542847ab47be6f8362539488924a/acf2016?theme=monokai)。 (CF8はすべて同じ機能を持つわけではありませんが)。 * RE:最後の行で爆破する*爆破する方法は?エラーが発生していますか?はいの場合、それを含めるには[あなたの質問を編集する](http://stackoverflow.com/posts/42102210/edit)できますか? – Leigh
ありがとう、@Leigh!それは、私がアーキテクチャを支配していない状況のうちの1つで、今後数年以内に全面的に書き直すのはうんざりです。私は新しいデータを公開しているAPIを所有しており、クライアントを更新するための "サポート"の役割を担っています。これが最後のものです。私は最初のエントリを私が捕まえることができるエラー、HTHで更新しました! – richwallace
私はMiguel-Fに同意します。別の何かをしている必要があります。そうでないとエラーが若干異なるコードによって発生しています。前述の例にcfloopを追加すると、* local.objectInstance *にそのオブジェクトが構造体ではなく配列であるため、エラーがスローされます。 * local.objectInstance.id *が存在しないため、エラーが発生します。彼の更新例を試してみてください。 – Leigh