2016-09-20 4 views
2

У меня есть класс, как показано ниже.Сопоставление запроса объекта JSONObject весной

class ExampleBean{ 
    public String Name; 
    public JSONObject data; 
} 

И я @GET обработчик, который выглядит следующим образом:

@GET 
@Consumes({MediaType.APPLICATION_JSON}) 
public Response getData(ExampleBean dataBean) 
{ 
    // some usage code here 
} 

Я хочу следующий JSON, чтобы быть сопоставлен с ExmampleBean:

{ 
    "Name":"Example", 
    "data":{ 
     "hello":"world", 
     "some":"value" 
    } 
} 

Все работает отлично, если data был который имел два открытых поля: hello и some. Но так как data - это JSONObject, который фактически не имеет этих полей или соответствующих сеттеров, он заканчивает метать Unrecognized field "hello" (Class JSONObject), not marked as ignorable at [Source: [email protected]; line: 31, column: 18]

+0

'Map '? – chrylis

+0

Я успешно сопоставил 'JsonNode' на верхнем уровне. Он работает, когда вы меняете jsonobject на jsonnode? –

ответ

0

игнорировать свойство данных при формировании объекта из входящего запроса.

class ExampleBean{ 
    public String Name; 
    @JsonIgnore 
    public JSONObject data; 
} 

и изменить сервис останова, чтобы принимать данные в качестве параметра из входящего запроса.

@GET 
@Consumes({MediaType.APPLICATION_JSON}) 
public Response getData(@RequestBody ExampleBean dataBean,RequestParam("data") String data) 
{ 

JSONParser parser = new JSONParser(); 
JSONObject json = (JSONObject) parser.parse(data); 
    // some usage code here 
} 

или вы можете изменить тип данных JsonObject data в String и образуют object из входящего запроса.

class ExampleBean{ 
public String Name; 
public String data; 
} 

, а затем создать объект JSON из строки данных

 @GET 
@Consumes({MediaType.APPLICATION_JSON}) 
public Response getData(@RequestBody ExampleBean dataBean) 
{ 

JSONParser parser = new JSONParser(); 
JSONObject json = (JSONObject) parser.parse(dataBean.data); 
    // converting the string data to jsonobject 
} 
+0

Я пробовал '@ JsonIgnore'. Не работает. Отличается ли он от '@ jsonignore'? –

+0

извините, это была типичная ошибка, вы попробовали второй метод? – Priyamal

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