2016-03-08 5 views
0

У меня есть метод $ http get, который должен вызывать мой локальный сервер. Я получаю правильный ответ от своего сервера через почтальона. После это мои ценности JSon:Как разобрать массив Json со значениями «id»: 1.1.1.1

[{"id":27885,"bslRef":acms.2016.04.00,"size":0,"isDefault":true,"baselineDate":null,"parentRef":null,"activities":null,"default":true,"open":true,"daily":false}] 

Как "bslRef":acms.2016.04.00 что значение Меня интересует не заключена в теге JSon [ «»].

Вот почему я получаю ошибку синтаксического анализа. Это ошибка, которую я получаю от jsonlint.

Error: Parse error on line 3: 
...: 27885, "bslRef": acms .2016 .04 .00, 
----------------------^ 
Expecting 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '[', got 'undefined' 

Ниже мой angularjs код контроллера:

$http.get('/baseline/getBaseline?', {params: { 
         currProject: $scope.selectedProject}}) 
        .success(function(data) { 

         $scope.baselines=JSON.stringify(data); 
        }) 
        .error(function(data) { 
         alert("failure"); 
        }); 

Я попытался с помощью метода синтаксического анализа() и метод stringify(), но не имеет смысла.

Приложение на стороне сервера - приложение для отдыха весенне-mvc, которое дает мне правильный ответ, но в указанном формате.

Пожалуйста, помогите мне либо разобрать это через угловые методы, либо получить ответ типа json от моего контроллера пружины. TIA.

+0

Какой тип 'bslRef' в код сервера? А также '$ scope.baselines' - это строка или объект? Если это объект, не нужно 'JSON.stringify'. –

+0

$ scope.baselines - это объект. Он имеет формат [{«id»: 27885, «bslRef»: acms.2016.04.00, «размер»: 0, «isDefault»: true, «baselineDate»: null, «parentRef»: null, «действия», : null, "default": true, "open": true, "daily": false}] –

+0

bslref - это тип объекта в коде сервера. –

ответ

0

Вопрос был решен. Фактически в моем классе pojo для Baseline я добавил следующую аннотацию Json.

private long id; 
@JsonSerialize(as = BaselineRef.class) 
@JsonRawValue 
private BaselineRef bslRef; 
private int size; 
@JsonProperty 
private boolean isDefault = false; 
private boolean isOpen = true; 
private boolean isDaily = false; 
private String baselineDate; 
private BaselineRef parentRef; 
private Collection<String> activities; 

Следовательно, при получении я получал следующие типы ответов.

[{"id":27885,"bslRef":acms.2016.04.00,"size":0,"isDefault":true,"baselineDate":null,"parentRef":null,"activities":null,"default":true,"open":true,"daily":false}]. 

После того, как я удалил аннотацию Теперь я получаю

`[{"id":27885,"bslRef":{"bslName":"2016.04.00","projectName":"acms","overrides":false},"size":0,"baselineDate":null,"parentRef":null,"activities":null,"default":true,"open":true,"daily":false}]` 

, который мой желаемый ответ. Здесь я гарантировал, что BaselineRef имеет метод toString. Здесь мне не нужно разбираться в моем угловом коде. Спасибо за помощь всем.

0

Одним из решения является преобразование ответа объекта самостоятельно, используя функцию для обработки repsone, когда он возвращается ...

Это можно найти в угловой документации.

$http({ 
url: '...', 
method: 'GET', 
//here you get the unparserd response ... 
transformResponse: appendTransform($http.defaults.transformResponse, 

    //you data response comes here ..which you can handle customly 
    function(data) { 
     //perform modifications & get data 
     $scope.baselines = doTransform(data); 
    }) 
}); 

А затем вы можете привязать данные к Html DOM по своему желанию. Это для одного получите request.If вы хотите использовать его во всех местах, попробуйте создать сервис или завод.

Спасибо, HTH

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

  • Нет связанных вопросов^_^