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

标签 java json string url

我想将以下 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/

相关文章:

php - 为 JsonObject 设置标题

php - Jquery Ajax Post 无法在所有浏览器中随机返回

java - 在 Scheduler(Timer) 的 run 方法中创建 Scheduler(Timer)

java - 在域模型对象中使用工厂?

java - NotificationCompat v7 不适用于 Oreo 及更高版本的操作系统

json - 编码到 JSON 结构扩展了另一个具有相同字段标签的结构

java - SWIG从String作为Java中的String数组获取returntype

java - 使用 RegEx 检查号码

ios - Swift - 从字符串中删除“字符

java - 从系统读取文本文件到 Hbase MapReduce