我需要将JSON响应映射到Java对象。我的Java类如下:
public class Response{
private String status;
private String message;
...
}
我正在使用的JSON无法控制,因此不能选择修改JSON。
{
"status": ["Sucess"],
"message": ["Some Message"],
...
}
我正在使用GSON进行转换。
final Response response = new Gson().fromJson(json, Response.class);
对象的每个属性都包装在JSON数组中。糟糕的设计,但我对此无能为力。 GSON
中是否有任何东西可以自动检测到status
和message
不是我的Java对象中的数组,因此可以从JSON数组中解开第一个条目?
答案 0 :(得分:1)
在设计自动化测试框架时,我陷入了类似的问题。
我建议您使用ObjectMapper
将JSON键映射到POJO字段。
public Response getResponseObject ()
{
Response object = null;
ObjectMapper mapper = new ObjectMapper( );
mapper.enable( DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY ); //<-- This will do the magic to accept as an array
ClassLoader classLoader = ClassLoader.getSystemClassLoader();
// assuming your json in data.json
try ( InputStream in = classLoader.getResourceAsStream( ( data.json ) ) )
{
object = mapper.readValue( in, Response.class );
System.out.println( ReflectionToStringBuilder.toString( object, ToStringStyle.MULTI_LINE_STYLE ) );
}
catch ( IOException e )
{
LOG.error( "Error occurred while creating Result object, cause:" + e.getMessage() );
}
return object;
}
read more,希望对您有所帮助。