Spring Responsebody,json 中的命名列表对象
Spring Responsebody, Naming List objects in json
我正在使用 Spring Framework 的 spring-boot 库开发 REST 服务。
我从我的服务中收到响应 JSON,我的问题是我正在使用父级 class 来存储作为请求结果发送的所有对象,并且响应是在没有名称的情况下发送的JSON 数组。
这是我的一项测试的输出:
success: true,
message: null,
data: [
{ },
{
vehicleBatteryId: 3,
modelTypeId: 3,
cycleCount: -9640,
currentCapacity: -9640,
manufactureDate: 414037682000,
manufacturerId: 10,
modeTypeCode: 461271880,
partStatus: 215692740,
lastMaintenanceDate: 428880743000
},
{
vehicleBmsId: 3,
bmsModelId: 5,
manufactureDate: 942436247000,
manufacturerId: 4,
lastMaintenanceDate: 437823118000,
partStatus: 477293493,
replaceDate: 179716409000,
replaceDistance: 4783810
}...
这是我想要得到的结果:
success: true,
message: null,
data: {
Property1:{ },
Property2:{
vehicleBatteryId: 3,
modelTypeId: 3,
cycleCount: -9640,
currentCapacity: -9640,
manufactureDate: 414037682000,
manufacturerId: 10,
modeTypeCode: 461271880,
partStatus: 215692740,
lastMaintenanceDate: 428880743000
},...
这是父级 class。我希望能够将它用于我的服务创建的每个响应,而不管该响应的详细信息
public class MasterResponse extends RequestStatus{
private List<Object> data;
public MasterResponse() {
init();
}
public MasterResponse(boolean _success, String _message){
super(_success, _message);
init();
}
private void init(){
this.data = new ArrayList<Object>();
}
public void addModel(Object newModel){
this.data.add(newModel);
}
public void clearData(){
this.data=null;
}
public List<Object> getData() {
return data;
}
public void setData(List<Object> data) {
this.data = data;
}
}
有人有什么想法吗?据我所知 Spring 使用 Jackson 转换为 json,我正在探索我可以用他们目前提供的 json 视图函数做些什么。
您正在使用 ArrayList,Jackson 将其序列化为 [{...},{...}, ...]
您可以为数据使用 Map(即 HashMap<>),但您可能需要创建自定义 "push()" 或 add() 函数,以维护索引 属性。即 Property1.
HashMap 对象将被序列化为:data: {"index-1":{...}, "index-2": { ... } ... }
您的代码的简单示例:
private Map<String, Object> data;
int nextIndex = 1;
private void init(){
this.data = new HashMap<String, Object>();
}
public void addModel(Object newModel){
this.data.add("Property" + this.nextIndex, newModel);
this.nextIndex++;
}
我正在使用 Spring Framework 的 spring-boot 库开发 REST 服务。 我从我的服务中收到响应 JSON,我的问题是我正在使用父级 class 来存储作为请求结果发送的所有对象,并且响应是在没有名称的情况下发送的JSON 数组。
这是我的一项测试的输出:
success: true,
message: null,
data: [
{ },
{
vehicleBatteryId: 3,
modelTypeId: 3,
cycleCount: -9640,
currentCapacity: -9640,
manufactureDate: 414037682000,
manufacturerId: 10,
modeTypeCode: 461271880,
partStatus: 215692740,
lastMaintenanceDate: 428880743000
},
{
vehicleBmsId: 3,
bmsModelId: 5,
manufactureDate: 942436247000,
manufacturerId: 4,
lastMaintenanceDate: 437823118000,
partStatus: 477293493,
replaceDate: 179716409000,
replaceDistance: 4783810
}...
这是我想要得到的结果:
success: true,
message: null,
data: {
Property1:{ },
Property2:{
vehicleBatteryId: 3,
modelTypeId: 3,
cycleCount: -9640,
currentCapacity: -9640,
manufactureDate: 414037682000,
manufacturerId: 10,
modeTypeCode: 461271880,
partStatus: 215692740,
lastMaintenanceDate: 428880743000
},...
这是父级 class。我希望能够将它用于我的服务创建的每个响应,而不管该响应的详细信息
public class MasterResponse extends RequestStatus{
private List<Object> data;
public MasterResponse() {
init();
}
public MasterResponse(boolean _success, String _message){
super(_success, _message);
init();
}
private void init(){
this.data = new ArrayList<Object>();
}
public void addModel(Object newModel){
this.data.add(newModel);
}
public void clearData(){
this.data=null;
}
public List<Object> getData() {
return data;
}
public void setData(List<Object> data) {
this.data = data;
}
}
有人有什么想法吗?据我所知 Spring 使用 Jackson 转换为 json,我正在探索我可以用他们目前提供的 json 视图函数做些什么。
您正在使用 ArrayList,Jackson 将其序列化为 [{...},{...}, ...] 您可以为数据使用 Map(即 HashMap<>),但您可能需要创建自定义 "push()" 或 add() 函数,以维护索引 属性。即 Property1.
HashMap 对象将被序列化为:data: {"index-1":{...}, "index-2": { ... } ... }
您的代码的简单示例:
private Map<String, Object> data;
int nextIndex = 1;
private void init(){
this.data = new HashMap<String, Object>();
}
public void addModel(Object newModel){
this.data.add("Property" + this.nextIndex, newModel);
this.nextIndex++;
}