2015-09-10 3 views
0

У меня есть 2 класса:
Test1 - отображает результат (сущность) для ответа.Сопоставление объекта с json с объектом (общий тип)

public class Test1 { 
    public String status_type; 
    public int error_code; 
    public String status_msg; 
    public Object data; 
} 

Test2 - Одно из объектов, которое мне нужно отправить, с дополнительными полями. (поля класса test1)

public class Test2 { 
    public int idd; 
    public String username; 
} 

Джерси сервис остальные

@Path("test") 
public class MyTest { 

    @GET 
    @Produces(MediaType.APPLICATION_JSON) 
    public Test1 getIt() { 

     Test2 t2 = new Test2(); 
     t2.idd = 1; 
     t2.username = "Jony Jackson"; 

     Test1 t1 = new Test1(); 
     t1.error_code = 0; 
     t1.status_type = "info"; 
     t1.data = t2; 

     return t1; 
    } 
} 

Результат Я получаю:

{"status_type":"info", "error_code":0, "data":"[email protected]"} 

Результат мне нужно получить:

{"status_type":"info","error_code":0, 
    "data":{"idd":1,"username":"Jony Jackson"}} 

Пожалуйста, Помогите это исправить.

+1

Просто быстрый обзор, на самом деле не попробовал: в вашем классе 'Test1' вместо' public Object data', это должно быть 'public Test2 data;'. Это должно быть причиной того, что он не переводит его должным образом. Надеюсь, поможет. – lrnzcig

+0

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

ответ

0

Я решаю свою проблему другими способами.

@Path("test") 
public class MyTest { 

    @GET 
    @Produces(MediaType.APPLICATION_JSON) 
    public Object getIt() { 

     Test2 t2 = new Test2(); 
     t2.idd = 1; 
     t2.username = "Jony Jackson"; 

     Test1 t1 = new Test1(); 
     t1.error_code = 0; 
     t1.status_type = "info"; 

     String json = null; 
     ObjectMapper mapper = new ObjectMapper(); 
     mapper.configure(SerializationConfig.Feature.WRITE_NULL_MAP_VALUES, false); 
     mapper.setSerializationInclusion(JsonSerialize.Inclusion.NON_NULL); 
     try { 
      t1.data = t2; 
      json = mapper.writeValueAsString(t1); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

     return json; 

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