gpt4 book ai didi

java - GSON 自动将 JSON 数组解包为 Java 对象

转载 作者:行者123 更新时间:2023-11-30 05:47:13 25 4
gpt4 key购买 nike

我需要将 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里面有什么吗?这会自动检测到 statusmessage不是我的 Java 对象中的数组,因此要从 JSON 数组中解开第一个条目?

最佳答案

我在设计自动化测试框架时遇到了类似的问题。

我建议您使用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 ,希望这有帮助。

关于java - GSON 自动将 JSON 数组解包为 Java 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54640786/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com