Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java对象中映射JSONObject_Java_Json - Fatal编程技术网

如何在Java对象中映射JSONObject

如何在Java对象中映射JSONObject,java,json,Java,Json,我必须将这个JSONObject映射到Java对象中。 这是我的Json: {"WALLET":{ "ID":"1234", "BAL":"20.000", "NAME":"Filomena", "EMAIL":"filo@gmail.com", "DOCS":[ { "ID":"001",

我必须将这个JSONObject映射到Java对象中。 这是我的Json:

{"WALLET":{  
            "ID":"1234",
            "BAL":"20.000",
            "NAME":"Filomena",
            "EMAIL":"filo@gmail.com",
            "DOCS":[  
                {  
                    "ID":"001",
                    "S":"0",
                    "TYPE":"CardId",
                    "VD":"2019"
                }
            ],
            "IBANS":[  
                {  
                    "ID":"001",
                    "S":"1",
                    "DATA":"iban",
                    "SWIFT":"swiftCode",
                    "HOLDER":"holder"
                }
            ],
            "STATUS":"string",
            "BLOCKED":"1",
            "SDDMANDATES":[  
                {  
                    "ID":"sddMandateId",
                    "S":"status",
                    "DATA":"iban",
                    "SWIFT":"swiftCode"
                }
            ],
            "LWID":"string",
            "CARDS":[  
                {  
                    "ID":"string",
                    "EXTRA":{  
                        "IS3DS":"string",
                        "CTRY":"string",
                        "AUTH":"string",
                        "NUM":"string",
                        "EXP":"string",
                        "TYP":"string"
                    }
                }
            ],
            "FirstName":"string",
            "LastName":"string",
            "CompanyName":"string",
            "CompanyDescription":"string",
            "CompanyWebsite":"string"
        }
}
这是我的Java类:

public class Wallet {

    private String id;
    private String bal;
    private String name;
    private String email;
    private List<Doc> docs;
    private List<Iban> ibans;
    private String status;
    private String blocked;
    private List<SddMandate> sddMandates ;
    private String lwid;
    private List<Card> cards;
    private String firstName;
    private String lastname;
    private String companyName;
    private String companyDescription;
    private String companyWebSite;



    public Wallet(){

    }




    public Wallet(String id, String bal, String name, String email, List<Doc> docs, List<Iban> ibans, String status,
            String blocked, List<SddMandate> sddMandates, String lwid, List<Card> cards, String firstName,
            String lastname, String companyName, String companyDescription, String companyWebSite) {
        super();
        this.id = id;
        this.bal = bal;
        this.name = name;
        this.email = email;
        this.docs = docs;
        this.ibans = ibans;
        this.status = status;
        this.blocked = blocked;
        this.sddMandates = sddMandates;
        this.lwid = lwid;
        this.cards = cards;
        this.firstName = firstName;
        this.lastname = lastname;
        this.companyName = companyName;
        this.companyDescription = companyDescription;
        this.companyWebSite = companyWebSite;
    }




    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getBal() {
        return bal;
    }
    public void setBal(String bal) {
        this.bal = bal;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public List<Doc> getDocs() {
        return docs;
    }
    public void setDocs(List<Doc> docs) {
        this.docs = docs;
    }
    public List<Iban> getIbans() {
        return ibans;
    }
    public void setIbans(List<Iban> ibans) {
        this.ibans = ibans;
    }



    public String getStatus() {
        return status;
    }



    public void setStatus(String status) {
        this.status = status;
    }



    public String getBlocked() {
        return blocked;
    }



    public void setBlocked(String blocked) {
        this.blocked = blocked;
    }



    public List<SddMandate> getSddMandates() {
        return sddMandates;
    }



    public void setSddMandates(List<SddMandate> sddMandates) {
        this.sddMandates = sddMandates;
    }



    public String getLwid() {
        return lwid;
    }



    public void setLwid(String lwid) {
        this.lwid = lwid;
    }



    public List<Card> getCards() {
        return cards;
    }



    public void setCards(List<Card> cards) {
        this.cards = cards;
    }



    public String getFirstName() {
        return firstName;
    }



    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }



    public String getLastname() {
        return lastname;
    }



    public void setLastname(String lastname) {
        this.lastname = lastname;
    }



    public String getCompanyName() {
        return companyName;
    }



    public void setCompanyName(String companyName) {
        this.companyName = companyName;
    }



    public String getCompanyDescription() {
        return companyDescription;
    }



    public void setCompanyDescription(String companyDescription) {
        this.companyDescription = companyDescription;
    }



    public String getCompanyWebSite() {
        return companyWebSite;
    }



    public void setCompanyWebSite(String companyWebSite) {
        this.companyWebSite = companyWebSite;   
}
现在,当我尝试调用对象上的方法时,我总是使用null,而不是实际值。
我该怎么办?

您的根级别错误。 也许,你需要降一级

JSONObject yourObject = json.get("WALLET");
Wallet walletDetails = gson.fromJson(yourObject.toString(), Wallet.class);

你有一个错误的根级别。 也许,你需要降一级

JSONObject yourObject = json.get("WALLET");
Wallet walletDetails = gson.fromJson(yourObject.toString(), Wallet.class);

您的对象变量名称与json属性名称不匹配。json中的“EMAIL”在对象中应该有相同的EMAIL。为了克服这个问题,可以在属性声明之前提到@JsonProperty

例如:

@JsonProperty(“电子邮件”)
私人字符串电子邮件

对象变量名与json属性名不匹配。json中的“EMAIL”在对象中应该有相同的EMAIL。为了克服这个问题,可以在属性声明之前提到@JsonProperty

例如:

@JsonProperty(“电子邮件”)
私人字符串电子邮件

要让Gson在反序列化时处理正确的字段名映射,您必须像这样注册
FieldNamingStrategy
(使用Java 8):

该策略将转换每个Java字段名以匹配JSON中的字段名。 这将覆盖几乎所有的字段,除了JSON响应中的大写字段,如“LastName”、“CompanyName”等。为了映射这些字段,您的FieldNamingStrategy必须变得更加智能,如:

field -> {
    String fname = field.getName();
    return "firstName".equals(fname) || "companyName".equals(fname) /*etc...*/ ? capitalize(fname) : fname.toUpperCase();
}
等等,我想你知道了。
capitalize()
方法可以在Apache Commons Lang之类的库中找到,也可以编写自己的方法,这里仅作示例。

要让Gson在反序列化时处理正确的字段名映射,必须注册一个
FieldNamingStrategy
,如下所示(使用Java 8):

该策略将转换每个Java字段名以匹配JSON中的字段名。 这将覆盖几乎所有的字段,除了JSON响应中的大写字段,如“LastName”、“CompanyName”等。为了映射这些字段,您的FieldNamingStrategy必须变得更加智能,如:

field -> {
    String fname = field.getName();
    return "firstName".equals(fname) || "companyName".equals(fname) /*etc...*/ ? capitalize(fname) : fname.toUpperCase();
}
等等,我想你知道了。
capitalize()
方法可以在ApacheCommonsLang之类的库中找到,也可以编写自己的方法,这里仅作示例。

您尝试过输出吗?系统输出打印LN(walletDetails);是的,有一个字符串gson不区分大小写吗?您是否尝试将json更改为小写?是否尝试输出?系统输出打印LN(walletDetails);是的,有一个字符串gson不区分大小写吗?你试过把json改成小写吗?直觉很好,我错过了!无论如何,我认为它仍然不能处理Java和JSON之间的字段名不匹配问题。请看我的答案以获得澄清。伟大的直觉,我错过了!无论如何,我认为它仍然不能处理Java和JSON之间的字段名不匹配问题。请参阅我的答案以获得澄清。也许我会收到小写json,因为现在它与Dezigo的答案一起工作。不管怎样,谢谢你。不客气,但我不明白如何使用普通的Gson实例为你工作。。。我尝试了一个使用JSON和类的快速测试,但它无法用默认的Gson设置映射字段,我是否遗漏了什么?如果它能工作,对你有好处,我只是不知道如何:)也许我会收到小写的json,因为现在它可以与Dezigo的答案一起工作。不管怎样,谢谢你。不客气,但我不明白如何使用普通的Gson实例为你工作。。。我尝试了一个使用JSON和类的快速测试,但它无法用默认的Gson设置映射字段,我是否遗漏了什么?对你有好处如果它有效,我只是不知道如何:)