2016-04-15 4 views
1

Это моя ситуация:Как десериализировать JSON HashMap <String, Object>?

private Map<String, Object> data = new HashMap<>(); 

public void setName(String x) {put("name", x);} 
public String getName() {return (String)get("name");} 

public void setAge(Integer x) {put("age", x);} 
public Integer getAge() {return (Integer)get("age");} 

public void setUUID(UUID x) {put("uuid", x);} 
public UUID getUUID() {return (UUID)get("uuid");} 

Теперь, когда я произвожу JSON от этого объекта я получаю { «данные»: { «имя»: ...}} Я не хочу, чтобы «данные»: {} часть.

Как это исправить?

[EDIT] Когда этот класс экспортируется как JSON по весне, формат - именно то, что я хочу.

+1

Как вы создаете объект JSON? Обычно нет части данных. – Jason

+0

новый Gson(). ToJson (myClass); – Dai

+0

действительно ли данные относятся к классу «Человек»? –

ответ

0

Это работает для меня.

ObjectMapper mapper = new ObjectMapper(); 
    String json = mapper.writeValueAsString(myClass); 
0

Поскольку весь ваш класс, кажется, в карте, просто добавьте геттер для карты к вам класса и вместо сериализации самого класса, сделать это как:

gson.toJson(foo.getData()) 

На стороне записки, Я должен сказать, что это довольно неудобно, когда геттеры и сеттеры делают действия на карте.

Смежные вопросы