2017-03-08 55 views
0

我对Java的春季REST API这给JSON输出是这样的工作:如何格式化弹簧安置JSON输出

{ 
    "speed1mbps": null, 
    "speed10mbps": null, 
    "speed100mbps": null, 
    "speed1000mbps": null, 
    "phone": null, 
    "NAME": "some name", 
    "STREET": "ST address", 
    "city": "somecity", 
    "state": "some state", 
    "zip": "232409", 
} 

但我需要为下面的JSON格式输出。

{ 
    speed:[ 
     1mbps:null 
     10mbps:null 
     100mbps:null 
     1000mbps:null 
     1000mbps:null 
    ], 
    "phone": null, 
    "NAME": "some name", 
    "STREET": "ST address", 
    "city": "somecity", 
    "state": "some state", 
    "zip": "232409", 
} 

是否可以格式化JSON?请让我知道如何格式化JSON。

+1

你想要的是无效的JSON。 –

+0

另外,在这个问题的三英里范围内没有任何Java的迹象。我正在删除该标签。 –

回答

0

您需要创建一个自定义的DTO,如果你要格式化的JSON,只要你想,普莱舍见下面的例子:

class Dto { 
    private Map<String, String> speeds; 
    private String phone; 
    private String name; 
    private String street; 
    private String city; 
    private String state; 
    private String zip; 
} 

然后你就可以在速度像添加条目...

speeds.put("1mbps", null); 
speeds.put("10mbps", null); 
speeds.put("100mbps", null); 
speeds.put("1000mbps", null); 

那么有效的JSON结果将是....

{ 
    speeds:{ 
     1mbps:null, 
     10mbps:null, 
     100mbps:null, 
     1000mbps:null, 
     1000mbps:null 
    }, 
    "phone": null, 
    "NAME": "some name", 
    "STREET": "ST address", 
    "city": "somecity", 
    "state": "some state", 
    "zip": "232409", 
} 

这是你应该回到你的REST响应的类。

+0

谢谢,这有助于添加自定义DTO,但在使用Hibernate时如何映射字段。那么,我把速度放在单独的DTO中并填充speeds.put(“1mbps”,sppeds.get1mbps());?像这样? – Raj

+0

如果你有1mpbs,10mbps等属性的实体(SPPEDS),那么使用hibernate将该实体映射到你的数据库表,然后一旦你检索到该实体的信息,那么你dto.getSpeeds()。put “1mbps”,sppeds.get1mbps())等,然后返回dto作为响应。 – imprezzeb

+0

我做了更改它看起来很好,但它失败了,因为我无法将速度映射与休眠映射它正在抛出无法确定类型的错误:映射,在表中,我该如何避免这种情况? – Raj