如何用值 "id" 解析 Json 数组:1.1.1.1
How to parse a Json array with values "id": 1.1.1.1
我有一个应该调用本地服务器的 $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 应用程序,它给我正确的响应,但采用上述格式。
请有人帮助我通过 angular 方法解析它,或者从我的 spring 控制器获取 json 类型的响应。
TIA。
其中一个解决方案是自己转换响应对象,使用一个函数来处理响应 returns...
这可以在 angular 文档中找到。
$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 request.If 你想在所有地方都用它,尝试创建一个服务或工厂。
谢谢,HTH
问题已解决。实际上,在我的基线的 pojo class 中,我添加了以下 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 方法。
在这里我不必解析我的 angular 代码。感谢大家的帮助。
我有一个应该调用本地服务器的 $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 应用程序,它给我正确的响应,但采用上述格式。
请有人帮助我通过 angular 方法解析它,或者从我的 spring 控制器获取 json 类型的响应。 TIA。
其中一个解决方案是自己转换响应对象,使用一个函数来处理响应 returns...
这可以在 angular 文档中找到。
$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 request.If 你想在所有地方都用它,尝试创建一个服务或工厂。
谢谢,HTH
问题已解决。实际上,在我的基线的 pojo class 中,我添加了以下 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 方法。 在这里我不必解析我的 angular 代码。感谢大家的帮助。