gpt4 book ai didi

java - 将 json 字符串转换为 java arraylist(使用 jackson)

转载 作者:行者123 更新时间:2023-12-02 07:17:26 26 4
gpt4 key购买 nike

我想将以下 json 字符串转换为 java arraylist,以便我可以获取文档中的 id 或名称并在 java 中进行更改。

{
response{
docs[
{id:#
name:#
}
]
}
}

最佳答案

有很多 HTTP 客户端库,但考虑到您要提取 JSON,最好的选择是使用 Jersey 客户端库。您需要创建一个与 JSON 匹配的 Java 对象(在本例中,是一个 Response 对象,其中包含一个字段 Docs,它是一个 Data 数组> 对象或类似的对象)并告诉 Jersey 客户端期望得到这样的结果。然后您将能够使用 Java 对象以您希望的任何形式输出它。

*更新

代码的基本概述。首先,设置 Jersey 客户端:

import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.config.DefaultClientConfig;
import com.sun.jersey.api.client.WebResource;

....


final ClientConfig clientConfig = new DefaultClientConfig();
clientConfig.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING, Boolean.TRUE);
final Client client = Client.create(clientConfig);

然后创建您的请求:

final WebResource webResource = client.resource("http://mydomain.com/myresource");

在此阶段,如果您想将 JSON 作为 String 取回,您只需调用:

final String json = webResource.get(String.class);

但是与其他 HTTP 客户端相比,使用 Jersey 的真正好处是它会为您解析 JSON,这样您就无需考虑它。如果您创建以下类:

public class DataResponse
{
private final List<DataDoc> docs;

@JsonCreator
public DataResponse(@JsonProperty("docs")List<DataDocs> docs)
{
this.docs = docs;
}

public List<DataDoc> getDocs()
{
return this.docs;
}
}

public class DataDoc
{
final String id;
final String name;
// Other fields go here

@JsonCreator
public DataDoc(@JsonProperty("id") String id,
@JsonProperty("name") String name)
{
this.id = id;
this.name = name;
}

// Getters go here
}

然后您可以将 Jersey 客户端代码更改为:

final DataResponse response = webResource.get(DataResponse.class);

现在您可以按照普通 Java 对象访问响应中的字段。

关于java - 将 json 字符串转换为 java arraylist(使用 jackson),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14755316/

26 4 0