2014-11-01 5 views
-1

Использование Gson, как сгенерировать JSON этого форматаGson генерировать JSON

Требуемый формат:

{ 
"9912412412":{"name":"nameerra", "email":"varrrr"}, 
"99349346346":{"email":"varrrr"}, 
"934636236":{"address":"something"} 
} 

Мой код, который генерирует массив JSON вместо JSON

public class ContactsModelRequest extends HashMap<String, ContactsModelRequest.Mobile>{ 
    public ContactsModelRequest(int size) { 
     super(size); 
    } 
    public static class Mobile { 
     public Mobile (String name, String email) { 
      this.email = email; this.name = name; 
     } 
     public String name; 
     public String email; 
    } 
} 

Gson gson = new Gson(); 
gson.getAdapter(ContactsModelRequest.class); 
String request = gson.toJson(contactsModel); 

ответ

1

Я надеваю Думаю, вам нужно ContactsModelRequest. Вы можете просто использовать HashMap.

Gson gson = new Gson(); 

    Map<String, Mobile> request = new HashMap<String, Mobile>(3); 
    Mobile mobile1 = new Mobile("nameerra", "varrrr", null); 
    Mobile mobile2 = new Mobile(null, "varrrr", null); 
    Mobile mobile3 = new Mobile(null, null, "something"); 

    request.put("9912412412", mobile1); 
    request.put("99349346346", mobile2); 
    request.put("934636236", mobile3); 

    String serializedRequest = gson.toJson(request); 
    System.out.println("serialized:" + serializedRequest); 

    HashMap<String, Mobile> deserializedRequest = gson.fromJson(serializedRequest, new TypeToken<HashMap<String, Mobile>>(){}.getType()); 

Mobile Обновите POJO и добавьте address поле, потому что у вас есть поле адреса в вашем образце JSon.

public class Mobile { 
    public Mobile(String name, String email, String address) { 
     this.email = email; 
     this.name = name; 
     this.address = address; 
    } 

    public String name; 
    public String email; 
    public String address; 
}