2016-02-02 2 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; 
     }); 

    } 
    } 
}) 

Проблема, с которой я столкнулась, заключается в том, что даже в точке отладчика ответ представляет собой массив объектов, которые имеют все атрибуты из JSON, кроме долготы, широты, created_at и updated_at.

К сожалению, я не могу определить причину, по которой эти четыре пары ключ-значение опущены, когда они читаются и возвращаются. Есть ли что-то, что должно контролировать, какая пара ключей и значений обрабатывается, на которую я оставил? Разве весь анализ JSON не анализируется и не превращается в объект?

+0

Что такое JSON *, отправленное браузером *? Маловероятно, что данные будут «исчезать» при JSON-декодировании, если это действительно часть ответа. – user2864740

+0

Вы используете сериализатор в своем приложении _Rails_? Найдите файл с именем, похожим на '* _serializer.rb'. – gnerkus

+0

@ user2864740 - Загрузка URL-адреса json сразу вернула выше. Будет ли это работать по-разному с браузером по сравнению с тем, что я увижу, если бы я напрямую связался с json? (Это http: // localhost: 3000/surpriseises/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

Смежные вопросы