0

我在这里实现一个例子

我需要输出 json 来命名数组。

{"files":[]}而不是{[]}我目前得到的输出。我需要做什么才能将名称添加到数组中?

 @GET
 @Path("/{key}/meta")
public Response redirect(@PathParam("key") String key) throws IOException {
BlobKey blobKey = new BlobKey(key);
BlobInfo info = blobInfoFactory.loadBlobInfo(blobKey);

String name = info.getFilename();
long size = info.getSize();
String url = "/rest/file/" + key; 
FileMeta meta = new FileMeta(name, size, url);

List<FileMeta> metas = Lists.newArrayList(meta);
GenericEntity<List<FileMeta>> entity = new GenericEntity<List<FileMeta>>(metas) {};
return Response.ok(entity).build();

}

4

1 回答 1

1

您需要您的实体类包含一个List<FileMeta>被调用的实例files以具有该 JSON 输出。

public Class EntityClass
{
  private List<FileMeta> files;
  //Getter and Setter Methods.
}

这是您需要的redirect方法。

@GET
@Path("/{key}/meta")
@Produces(MediaType.APPLICATION_JSON)
public Response redirect(@PathParam("key") String key) throws IOException {
BlobKey blobKey = new BlobKey(key);
BlobInfo info = blobInfoFactory.loadBlobInfo(blobKey);

String name = info.getFilename();
long size = info.getSize();
String url = "/rest/file/" + key; 
FileMeta meta = new FileMeta(name, size, url);

List<FileMeta> meta = Lists.newArrayList(meta);
EntityClass entity= new EntityClass();
entity.setFiles(meta);
return Response.ok(entity).build();
}

PS:另外,您需要在 web.xml 中配置 POJOMapping。

<init-param>
  <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
  <param-value>true</param-value>
</init-param>
于 2012-12-31T17:15:23.870 回答