如何使用值" id":1.1.1.1

时间:2016-03-08 09:29:51

标签: angularjs json http-get spring-restcontroller

我有一个$ http get方法,它应该调用我的本地服务器。我通过邮递员得到了我的服务器的正确回复。 以下是我的Json值:

[{"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");
                   });

我尝试过使用parse()方法和stringify()方法但没有用。

我的服务器端应用程序是一个spring-mvc rest应用程序,它给了我正确的响应,但是以上述格式。

请帮助我通过角度方法解析这个问题,或者从我的弹簧控制器那里得到一个json类型的响应。 TIA。

2 个答案:

答案 0 :(得分: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。这是针对单个 get 请求。如果您想在所有地方使用它,请尝试创建服务或工厂。

谢谢,HTH

答案 1 :(得分:0)

问题解决了。实际上在我的基线的pojo类中,我添加了以下Json注释。

 $dirs = Get-ChildItem $directory | where {$_.psiscontainer -eq $false} 

 foreach ($d in $dirs){ python script.py $d "${d}_output.txt";}`

因此,在检索时,我得到了以下类型的响应。

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}].

这是我想要的回应。在这里,我确保BaselineRef具有toString方法。 在这里,我不必解析我的角度代码。谢谢大家的帮助。