当前位置: 首页 > 知识库问答 >
问题:

如何在JavaPOJO类中反序列化json对象?

公孙棋
2023-03-14

我有一个简单的JSON语句,类型非常适合需要。像这样

 {
       actor:{name:"kumar",mbox:"kumar@gmail.com"}
       verb :"completed"
    }

{
       actor:{name:["kumar","manish"],mbox:["kumar@gmail.com","manish@gmail.com"]}
       verb :{
            "id" : "http://adlnet.gov/expapi/verbs/completed",
        "display" : {
            "en-US" : "completed"
        }
    }

我使用POJO类映射这个json字符串和pojo类代码是给bleow

@JsonProperty("actor")
Actor actor;
@JsonProperty("verb")
Verb objVerb;
@JsonProperty("verb")
String verb;
public Actor getActor() {
    return actor;
}
public void setActor(Actor actor) {
    this.actor = actor;
}
public Verb getObjVerb() {
    return objVerb;
}
public void setObjVerb(Verb objVerb) {
    this.objVerb = objVerb;
}
@JsonIgnore
public String getVerb() {
    return verb;
}
@JsonIgnore
public void setVerb(String verb) {
    this.verb = verb;
}
public static class Actor {
    String objectType;
    @JsonProperty("name")
    ArrayList<String> listName;
    @JsonProperty("name")
    String name;
    @JsonProperty("mbox")
    ArrayList<String> listMbox;
    @JsonProperty("mbox")
    String mbox;
    @JsonProperty("mbox_sha1sum")
    ArrayList<String> Listmbox_sha1sum;
    @JsonProperty("mbox_sha1sum")
    String mbox_sha1sum;
    @JsonProperty("openid")
    String openid;
    @JsonProperty("account")
    Account account;
    public String getObjectType() {
        return objectType;
    }

    public void setObjectType(String objectType) {
        this.objectType = objectType;
    }

    public ArrayList<String> getListName() {
        return listName;
    }

    public void setListName(ArrayList<String> listName) {
        this.listName = listName;
    }
    @JsonIgnore
    public String getName() {
        return name;
    }
    @JsonIgnore
    public void setName(String name) {
        this.name = name;
    }

    public ArrayList<String> getListMbox() {
        return listMbox;
    }

    public void setListMbox(ArrayList<String> listMbox) {
        this.listMbox = listMbox;
    }
    @JsonIgnore
    public String getMbox() {
        return mbox;
    }
    @JsonIgnore
    public void setMbox(String mbox) {
        this.mbox = mbox;
    }

    public ArrayList<String> getListmbox_sha1sum() {
        return Listmbox_sha1sum;
    }

    public void setListmbox_sha1sum(ArrayList<String> listmbox_sha1sum) {
        Listmbox_sha1sum = listmbox_sha1sum;
    }
    @JsonIgnore
    public String getMbox_sha1sum() {
        return mbox_sha1sum;
    }
    @JsonIgnore
    public void setMbox_sha1sum(String mbox_sha1sum) {
        this.mbox_sha1sum = mbox_sha1sum;
    }

    public String getOpenid() {
        return openid;
    }

    public void setOpenid(String openid) {
        this.openid = openid;
    }

    public Account getAccount() {
        return account;
    }

    public void setAccount(Account account) {
        this.account = account;
    }

    public static class Account {
        @JsonProperty("homePage")
        String homePage;
        @JsonProperty("name")
        String name;
        public String getHomePage() {
            return homePage;
        }
        public void setHomePage(String homePage) {
            this.homePage = homePage;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
    }
}
public static class Verb {
    String id;
    Map<String,String> display;
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public Map<String, String> getDisplay() {
        return display;
    }
    public void setDisplay(Map<String, String> display) {
        this.display = display;
    }
}

我正在使用jaxb和jakson。我正在实现webservice来处理json语句,所以我使用bean类来映射json。但是当我使用映射这个json时,它会给出以下异常

org.codehaus.jackson.map.JsonMappingExcture:名称为"mbox"的属性有两个条目。

定义一个适当的bean结构,以便直接映射到bean

共有2个答案

卜昂熙
2023-03-14

你可以使用gson。

类别cls=gson。fromJson(jsonString,clazz);

在这里,jsonString可以被字符串化为java脚本对象。格森。fromJson方法可以将java脚本键映射到java属性。

吕寒
2023-03-14

尝试只留下@JsonProperty("mbox")ArrayList

因此,在反序列化中,它将能够作为数组和单个元素获得。

 类似资料:
  • 问题内容: 我正在使用dart包json_serializable进行json序列化。查看flutter文档,它显示了如何反序列化单个对象,如下所示: 但是,我对dart不够熟悉,无法弄清楚如何对项目列表而不是单个实例执行相同的操作。 问题答案: 好吧,您的服务将处理作为地图的响应正文,或相应地处理地图列表。根据您所拥有的代码,您要核算1件商品。 如果响应主体是可迭代的,那么,如果我正确理解了您的

  • 我在爪哇是新来的! 我的目标:我有收集的对象,让我保持任何类型的对象通过一些键(如地图)(把他们到它和从)。我可以向它添加任何类型的对象(例如,我可以添加MyClass的对象)。然后,我使用GSON序列化这个对象以JSON格式分离字符串(例如,我可以序列化这个字符串以分离文件)。当我想拿回某个对象时,我通过键从collection请求它,collection将对应的字符串反序列化到object对象

  • 有没有办法将一般对象序列化为Json并将Json反序列化为对象<如果对象是一个实体,我可以使用Jackson 2库来实现这个目的<但是如果对象是一个普通类,我该怎么做呢? 例如,我想序列化com.datastax.driver.core.querybuilder。将更新为Json并保存到DB,然后搜索并反序列化它以更新对象,最后将其用作com.datastax.driver.core.Sessio

  • 我试图获取我的Web请求JSON输出并解析它。这是输出 我为这些结果创建了公共课程 当我尝试反序列化Record类并选择名称时,我从RootObject类获得名称。这是我的密码

  • 问题内容: 我正在尝试使用Northwind OData服务: http://services.odata.org/V3/OData/OData.svc/Products?$format=json 并将其反序列化为一系列产品: 但是序列化器似乎不喜欢该部分,并且事实是那里有2 条记录(不确定它们是什么)。 是否有捷径可寻? 问题答案: 使用Json.Net

  • 我尝试反序列化json: 我有两个实体: 和 如何使用一个json条目同时反序列化两个实体?以下是使用Jackson ObjectMapper的main摘录: 它解析日期、uuid和数据集,但不能解析具有hmm_subfamily、hmm_evalue和hmm_score值的HmmResult对象:我得到错误:p.getHmmResult():null。(HmmResult hm=ObjMappe