我試圖解析ColdFusion的JSON數據,使它看起來 「正常」 ColdFusion的JSON:解析ColdFusion的JSON javascript函數 - 未捕獲的ReferenceError:未定義WddxRecordset
{"ROWCOUNT":3,"COLUMNS":["ROWID","REL","DATE","FOA","TITLE","APPRECEIPE","OPENING","KEYWORDS","DOC","PURPOSE","APP","NAME","PURPOSE"],"DATA":{"ROWID":[24842,24841,23780],"REL":["032","031","108"],
...
搜查網頁,發現此鏈接:
http://www.tysoncadenhead.com/blog/parsing-coldfusion-json-on-the-client-side#.V-UpKfkrKUk
他提供使用此功能:
Object.prototype.parseCFJSON = function() {
var result = [],
data = this;
for (var j = 0; j < data.DATA.length; j++) {
result[j] = {};
for (var i = 0; i < data.COLUMNS.length; i++) {
result[j][data.COLUMNS[i].toLowerCase()] = data.DATA[j][i];
}
}
return result;
};
這裏是我的代碼
<cfset jsonURL = SerializeJSON(SmartGuideSearchRet,true)>
<cfset URLd = #SmartGuideSearchRet#> //My CF Struct
<script>
<cfoutput>
var #toScript(URLd,"URLd")#;
</cfoutput>
Object.prototype.parseCFJSON = function() {
var result = [],
data = this;
for (var j = 0; j < data.DATA.length; j++) {
result[j] = {};
for (var i = 0; i < data.COLUMNS.length; i++) {
result[j][data.COLUMNS[i].toLowerCase()] = data.DATA[j][i];
}
}
return result;
};
ujsonURL = URLd.parseCFJSON();
console.log(ujsonURL);
</script>
我的控制檯給我這個錯誤Uncaught ReferenceError: WddxRecordset is not defined
當我嘗試了JSON的ColdFusion數據提供給這個函數是這樣的:
<script>
<cfoutput>
var #toScript(URLd,"URLd")#;
</cfoutput>
Object.prototype.parseCFJSON = function() {
var result = [],
data = this;
for (var j = 0; j < data.DATA.length; j++) {
result[j] = {};
for (var i = 0; i < data.COLUMNS.length; i++) {
result[j][data.COLUMNS[i].toLowerCase()] = data.DATA[j][i];
}
}
return result;
};
ujsonURL = jsonURL.parseCFJSON();
console.log(ujsonURL);
</script>
我得到這個錯誤:
Uncaught TypeError: Cannot read property 'length' of undefined
在該行
for (var j = 0; j < data.DATA.length; j++) {
我做錯了什麼,我真的很爲難。任何幫助,將不勝感激。我可能會完全錯誤地使用js函數(仍在學習)。
對不起,我搞砸了我的評論:在你的第二個片段:jsonURL仍然定義,對吧? 你有沒有試過在控制檯輸出你的數據變量,以確切地看到什麼被傳遞給函數? – Esten
@Esten當我嘗試傳遞給它時,我收到了這些錯誤。 – Ren44
我說的是,如果你把'console.log(this)'放在錯誤的'for'條件之前。它基本上是說它無法找到'data.DATA'的值,所以我很好奇''這個''的值是什麼,在'for'之前什麼也沒找到,可能是 – Esten