2017-03-08 68 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