2016-02-02 48 views
0

我有一個Rails的後端,將成爲JSONs像這樣的:(只有相關的部分)是這樣的(這是如2.json)爲什麼我的JSON解析一些缺少的鍵值對?

{"id":2,"name":"Magic","location":"Cyberjaya","surprise_type":"Great","instructions":"test","status":"awesome","pricing_level":3,"longitude":"2.90873","latitude":"101.655027","created_at":"2016-02-02T07:19:18.247Z","updated_at":"2016-02-02T12:59:14.403Z"} 

和AngularJS app.js代碼:

.factory('MarkersLoc', function($resource) { 
    debugger; 
    return $resource("http://localhost:3000/surprises/:id.json"); 
}) 

.factory('Markers', function(MarkersLoc) { 

    var markers = []; 

    return { 
    getMarkers: function(){ 
     return MarkersLoc.query().$promise.then(function(response){ 
      debugger; 
      markers = response; 
     console.log("Markers: ", markers); 
      return markers; 
     }); 

    } 
    } 
}) 

我遇到的問題是,即使在調試器的位置,響應也是一個對象數組,其中包含除經度,緯度,created_at和updated_at之外的所有JSON屬性。

不幸的是,我不能確定這些鍵值對在被讀取和返回時省略的原因。有什麼東西應該控制我正在處理哪些鍵值對嗎?整個JSON不會被解析並轉換爲對象嗎?

+0

什麼是JSON *發送到瀏覽器*?如果JSON解碼的確是響應的一部分,那麼數據不太可能「消失」。 – user2864740

+0

你在_Rails_應用程序中使用了一個序列化程序嗎?查找名稱與'* _serializer.rb'類似的文件。 – gnerkus

+0

@ user2864740 - 直接加載json的URL返回上面的內容。如果我直接鏈接到json,它會以不同於瀏覽器的方式提供服務嗎? (這是http:// localhost:3000 /驚喜/ 2.json) –

回答

0

缺失值是數據由後端控制器序列化的結果。要查看所有密鑰,請確保在序列化程序中定義了所有屬性:

class SurpriseSerializer < ActiveModel::Serializer 
    attributes :id, 
      :name, 
      :location, 
      :surprise_type, 
      :instructions, 
      :status, 
      :pricing_level, 
      # Add the missing attributes to the serializer 
      :longitude, 
      :latitude, 
      :created_at, 
      :updated_at 
end 
+1

非常感謝。我這樣做,它的工作。我完全忘記了這個序列化器,並且當我第一次編輯它(如果我是第一次做的話)。這確實是解決方案,它太尷尬了,它是如此簡單。 –

+0

不客氣。 – gnerkus

相關問題