2013-08-26 22 views
0

我正在使用ColdFusion處理來自cfc的Ajax數據並返回序列化的數據。控制檯以這種格式顯示數據。使用JavaScript解析串行化數據

query('id':[1],'title':['value'],'descr':['value2']) 

我該如何解析?

+6

如果您返回JSON,那麼您可以使用JS輕鬆解析它。但是你顯示的格式是自定義的,所以你必須編寫你自己的解析器。請注意,這與jQuery或JSON無關。 –

+0

由於您顯示的格式與JSON類似,因此可能最容易將ColdFusion代碼更改爲返回JSON,因此您可以使用[jQuery的JSON解析函數](http://api.jquery.com/jQuery.parseJSON/) 。如果我猜如何讀取自定義格式,那麼與您的示例相同的JSON將是'{'id':1,'title':'value','descr':'value2'}'。 –

+0

自定義格式實際上是一個可用於序列化查詢的coldfusion函數。我將使用serializeJSON並查看它是如何工作的。 – dutchlab

回答

1

這是一個自定義格式,這是不容易解析,但有一些變化,你可以將其轉換成JSON:

  1. 更換query({
  2. }
  3. 更換拖尾 )
  4. 更換"\"
  5. 更換'"

如果你想保持query,然後用{"query":{取代它與}}

注意更換):這是一個非常簡單,因此脆弱的解決方案。更好的解決方案是讓你的服務器端框架生成適當的JSON併發送給瀏覽器。

編輯如果您有JSON字符串,則可以使用jQuery.parseJSON()來解析它。

+0

自定義格式實際上是一個可用於序列化查詢的coldfusion函數。我將使用serializeJSON並查看它是如何工作的。 – dutchlab

+0

{「COLUMNS」:[「ID」,「TITLE」,「DESCR」],「DATA」:[[1,「value1」,「value2」]]}。使用serializeJSON控制檯顯示這一點。我已經看到有些人不得不編寫特殊腳本來將數據轉換爲不同的格式。有沒有辦法用JQuery來處理這個問題? – dutchlab

+0

是:'var obj = jQuery.parseJSON(...);' –

0

數據序列化的格式使得將其解析爲JSON非常簡單。查看jsfiddle瞭解實例。我開始將原始數據作爲字符串獲取。接下來,我替換了單引號,並在字符串周圍添加了大括號以適應JSON字符串格式。

jsFiddle example


步驟1

query('id':[1],'title':['value'],'descr':['value2']) 

'id':[1],'title':['value'],'descr':['value2'] 

步驟2

'id':[1],'title':['value'],'descr':['value2'] 

{"id":[1],"title":["value"],"descr":["value2"]} 

現在你可以使用JSON.parse從序列化的字符串創建一個JavaScript對象。但請注意,格式中的所有值都是數組值。這是一個小例子來說明我的意思:

{ 
    "int": 1, 
    "boolean": true, 
    "string": "foo", 
    "array": ["value1", true, 1234] 
} 

在你的榜樣每個值是一個數組的值,但JSON.parse解析它們視爲一個值,如果數組僅包含一個元素。