首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将此Json对象解析为Java对象?

如何将此Json对象解析为Java对象?
EN

Stack Overflow用户
提问于 2021-01-03 03:12:32
回答 1查看 70关注 0票数 0

我试图将Json对象解析为Java对象,但它的一个键出现了问题。这是我试图解析的关键字:

代码语言:javascript
复制
"formats":{"application/x-mobipocket-ebook":"http://www.gutenberg.org/ebooks/84.kindle.images",
"text/plain; charset=utf-8":"http://www.gutenberg.org/files/84/84-0.zip",
"text/html; charset=utf-8":"http://www.gutenberg.org/files/84/84-h/84-h.htm",
"application/rdf+xml":"http://www.gutenberg.org/ebooks/84.rdf",
"application/epub+zip":"http://www.gutenberg.org/ebooks/84.epub.images",
"application/zip":"http://www.gutenberg.org/files/84/84-h.zip",
"image/jpeg":"http://www.gutenberg.org/cache/epub/84/pg84.cover.small.jpg"}

所以我有这样的Java类:

代码语言:javascript
复制
public class Format {

    @JsonProperty("application/x-mobipocket-ebook")
    private String ebook;

    @JsonProperty("text/plain; charset=utf-8")
    private String textPlain;

    @JsonProperty("text/html; charset=utf-8")
    private String textHtml;

    @JsonProperty("application/rdf+xml")
    private String textXml;

    @JsonProperty("application/epub+zip")
    private String epubZip;

    @JsonProperty("application/zip")
    private String zip;

    @JsonProperty("image/jpeg")
    private String image;

//getters, setters and toString..
}

我得到了其他键的结果(它只是一个带有名称、作者等的json对象),但是这个键没有问题,我得到的结果是空的。那么,我如何才能正确地获取这些信息呢?(我已经找了一段时间了,但其他答案都不起作用)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-03 04:20:08

您可以使用@SerializedName注释。该注释指示带注释的成员应该被序列化为JSON,并使用提供的name值作为其字段名。

raw/format_sample.json

代码语言:javascript
复制
{
   "formats":{
      "application/x-mobipocket-ebook":"http://www.gutenberg.org/ebooks/84.kindle.images",
      "text/plain; charset=utf-8":"http://www.gutenberg.org/files/84/84-0.zip",
      "text/html; charset=utf-8":"http://www.gutenberg.org/files/84/84-h/84-h.htm",
      "application/rdf+xml":"http://www.gutenberg.org/ebooks/84.rdf",
      "application/epub+zip":"http://www.gutenberg.org/ebooks/84.epub.images",
      "application/zip":"http://www.gutenberg.org/files/84/84-h.zip",
      "image/jpeg":"http://www.gutenberg.org/cache/epub/84/pg84.cover.small.jpg"
   }
}

然后在Format类中,在属性中添加SerializedName注释

代码语言:javascript
复制
class Format {

    @SerializedName("application/x-mobipocket-ebook")
    private String ebook;

    @SerializedName("text/plain; charset=utf-8")
    private String textPlain;

    @SerializedName("text/html; charset=utf-8")
    private String textHtml;

    @SerializedName("application/rdf+xml")
    private String textXml;

    @SerializedName("application/epub+zip")
    private String epubZip;

    @SerializedName("application/zip")
    private String zip;

    @SerializedName("image/jpeg")
    private String image;
    
//getters, setters and toString..
}

就是这样,玩得开心!

代码语言:javascript
复制
gson.fromJson(FileUtils.loadFromRaw(context, R.raw.formats_sample), Format::class)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65543057

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档