java - 如何使用 ReSTLet 将 Json 结果反序列化为 POJO

标签 java json restlet pojo

我正在尝试将 Web 服务的 Json 结果反序列化为 POJO。

ClientResource clientResource = new ClientResource("http://itunes.apple.com/search?term=marc+jordan&media=music&entity=album");
AlbumInfoResource resource = clientResource.wrap(AlbumInfoResource.class);
AlbumInfo albumInfo = resource.retrieve();

结果albumInfo为空,不抛出异常。
我是 Restlet 的新手,我做错了什么?

接口(interface):

public interface AlbumInfoResource {
  @Get
  public AlbumInfo retrieve();
 }

Web 服务的 Json 结果如下所示:

{
    "resultCount": 49,
    "results": [
        {
            "wrapperType": "collection",
            "collectionType": "Album",
            "artistId": 771969,
            "collectionId": 205639995,
            "amgArtistId": 4640,
            "artistName": "Marc Jordan",
            "collectionName": "This Is How Men Cry",
            "collectionCensoredName": "This Is How Men Cry",
            "artistViewUrl": "http://itunes.apple.com/us/artist/marc-jordan/id771969?uo=4",
            "collectionViewUrl": "http://itunes.apple.com/us/album/this-is-how-men-cry/id205639995?uo=4",
            "artworkUrl60": "http://a5.mzstatic.com/us/r30/Music/cd/3f/13/mzi.rxpvpvdd.60x60-50.jpg",
            "artworkUrl100": "http://a1.mzstatic.com/us/r30/Music/cd/3f/13/mzi.rxpvpvdd.100x100-75.jpg",
            "collectionPrice": 9.9,
            "collectionExplicitness": "notExplicit",
            "trackCount": 10,
            "copyright": "1999 Cafe Productions Inc.",
            "country": "USA",
            "currency": "USD",
            "releaseDate": "2006-11-07T08:00:00Z",
            "primaryGenreName": "Jazz"
        },
...
...
    }
]

AlbumInfo 类:

public class AlbumInfo implements Serializable {

    private static final long serialVersionUID = 1L;

    private int _resultCount;
    private ArrayList<Album> _albums;

    public AlbumInfo() {
        _albums = new ArrayList<Album>();
    }

    public AlbumInfo(int resultCount, ArrayList<Album> albums) {
        _resultCount = resultCount;
        _albums = albums;
    }

    public int getResultCount() {
        return _resultCount;
    }

    public void setResultCount(int resultCount) {
        _resultCount = resultCount;
    }

    public ArrayList<Album> getAlbums() {
        return _albums;
    }

    public void setAlbums(ArrayList<Album> _albums) {
        this._albums = _albums;
    }

}

Album 类太大了,无法张贴在这里,但我已尽可能合理地映射元素。

最佳答案

如果您还没有,则需要将 ReSTLet 的 JacksonConverter 添加到已注册的转换器列表中:

    List<ConverterHelper> converters = Engine.getInstance().getRegisteredConverters();
    converters.add(new JacksonConverter());

当然,还要将 org.reSTLet.ext.jackson.jar 添加到您的构建路径。

关于java - 如何使用 ReSTLet 将 Json 结果反序列化为 POJO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9966753/

相关文章:

java - 移动SDK错误: OPERATION_NOT_ALLOWED

java - 使用 JSONAssert 检查 JSON 数组中是否存在某个项目

java - 对 reSTLet 中的多个映射应用相同的过滤器

java - Spring Rest 客户端实现 : Could not extract response: no suitable HttpMessageConverter found for response type with xstreamMarshaller

java - Selenium 中的清除日期字段

java - 如何在 Java 中将静态类作为参数传递

Mysql JSON_EXTRACT在做 'not matching'请求时忽略一些字段

jquery - AJAX 请求不显示我请求的任何数据?

java - NoSuchMethodError : com. google.common.base.Stopwatch.createStarted()Lcom/google/common/base/秒表

java - 如何使用 JSTL <c :set> 存储字符