2010-09-13 54 views
0

對不起,如果這是轉發,但我發佈後無法找到我的問題。我有一個軌道應用程序呈現一個JSON字符串,並在數據庫中存儲相同的刺痛。接收輸出的初始頁面的輸出和顯示來自db的數據的頁面具有不同的輸出。數據和格式化數據的功能是相同的。我很難過。從JSON.stringify輸出不一致輸出

功能:

function prettyPrint(jsonStr) { 
    var jsonObj = jQuery.parseJSON(jsonStr); 
    return '<pre>' + JSON.stringify(jsonObj,null,'\t') + '</pre>'; 
} 

數據:

{"Account":{"account_id":1},"response_details":[],"return_code":200,"Devices":[{"imei":"1234","name":"Device 1"},{"imei":"54321","name":"device 3"},{"imei":"354476024650842","name":"device 4 [no data]"},{"imei":"55124","name":"BlackBerry (8800)"},{"imei":"1234567890","name":"Garmin Sample"},{"imei":"987654321","name":"Second Garmin"},{"imei":"546787545678","name":"Tower 1"}]} 

輸出1:(從AJAX)

{ 
    "Account": { 
     "account_id": 1 
    }, 
    "response_details": [], 
    "return_code": 200, 
    "Devices": [ 
     { 
      "imei": "1234", 
      "name": "Device 1" 
     }, 
     { 
      "imei": "54321", 
      "name": "device 3" 
     }, 
     { 
      "imei": "354476024650842", 
      "name": "device 4 [no data]" 
     }, 
     { 
      "imei": "55124", 
      "name": "BlackBerry (8800)" 
     }, 
     { 
      "imei": "1234567890", 
      "name": "Garmin Sample" 
     }, 
     { 
      "imei": "987654321", 
      "name": "Second Garmin" 
     }, 
     { 
      "imei": "546787545678", 
      "name": "Tower 1" 
     } 
    ] 
} 

輸出2:(從分貝)

{ 
    "Account": { 
     "account_id": 1 
    }, 
    "response_details": "[]", 
    "return_code": 200, 
    "Devices": "[{\"imei\": \"1234\", \"name\": \"Device 1\"}, {\"imei\": \"54321\", \"name\": \"device 3\"}, {\"imei\": \"354476024650842\", \"name\": \"device 4 [no data]\"}, {\"imei\": \"55124\", \"name\": \"BlackBerry (8800)\"}, {\"imei\": \"1234567890\", \"name\": \"Garmin Sample\"}, {\"imei\": \"987654321\", \"name\": \"Second Garmin\"}, {\"imei\": \"546787545678\", \"name\": \"Tower 1\"}]" 
} 
+0

你在使用輸出從DB結果代碼?它是一個存儲過程,服務器端腳本?我需要並排查看代碼,找出造成差異的原因。 – Adam 2010-09-13 18:50:41

+0

我將檢索到的數據傳遞給相同的js函數以寫入div。 – 2010-09-13 19:02:31

回答

0

「Devices」數組和「response_details」數組都被編碼爲字符串而不是數組。在將數據放入數據庫並修復該數據的代碼中查找發生了什麼。

+0

不應該jQuery.parseJSON(jsonStr)創建一個有效的json對象w /數組。傳遞字符串中的數組周圍沒有引號。 – 2010-09-14 12:41:17

+0

我需要看到你的數據庫保存代碼進一步調試。在放入數據庫之前,您不需要解析JSON,除非您正在編組對象。 – Joshua 2010-09-14 16:03:09

0

我結束了紅寶石格式化輸出

<% response = JSON.load(@order.response) %> 
    <% main_counter = 1 %> 
    <pre> 
    { 
    <% response.each do |k,v| -%> 
    <% if v.is_a?(Hash) %> 
     <%=k%>: { 
      <% counter = 1 %> 
      <% v.each do |k2,v2| -%> 
      <%=k2%>: <%=v2.to_json%><% if counter < v.size %>,<%end%> 
      <% counter += 1 %> 
      <%end%> 
     }<% if main_counter < response.size %>,<%end%> 
    <% elsif v.is_a?(Array) %> 
     <%=k%>: [ 
      <% counter = 1 %> 
      <% v.each do |v2| -%> 
      <%=v2.to_json%><% if counter < v.size %>,<%end%> 
      <% counter += 1 %> 
      <%end%> 
     ]<% if main_counter < response.size %>,<%end%> 
    <%else%> 
     <%=k%>: <%=v%><% if main_counter < response.size %>,<%end%> 
    <%end%><% main_counter += 1 %> 
    <%end%> 
    } 
    </pre> 
+1

yikes!請記住,你可能用這種方法在別的地方掩蓋了一個bug。 – Joshua 2010-09-14 17:47:04