its*_*ang 15 java json jackson
假设我有一个像这样的Json对象:
{
"name": "Bob Dole",
"company": "Bob Dole Industries",
"phone": {
"work": "123-456-7890",
"home": "234-567-8901",
"mobile": "345-678-9012"
}
}
Run Code Online (Sandbox Code Playgroud)
为了帮助我阅读它,我使用Jackson的Object Mapper和以下类:
public class Contact {
public static class Phone {
private String work;
private String home;
private String mobile;
public String getWork() { return work; }
public String getHome() { return home; }
public String getMobile() { return mobile; }
public void setWork(String s) { work = s; }
public void setHome(String s) { home = s; }
public void setMobile(String s) { mobile = s; }
}
private String name;
private String company;
private Phone phone;
public String getName() { return name; }
public String getCompany() { return company; }
public Phone getPhone() { return phone; }
public void setName(String s) { name = s; }
public void setCompany(String s) { company = s; }
public void setPhone(Phone p) { phone = p; }
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,如何(使用最简单的解释),Object mapper"反序列化"Json对象?我认为这是匹配变量名称,但用几个字母更改它们不会影响输出.然后,我尝试切换set()函数的顺序,但是没有做任何事情.我也试过了,但这也没用.我猜这里的工作比较复杂,但是什么呢?
我试着查看文档和过去的代码,但我没有看到对我有意义的解释.
小智 32
没有任何注释,它执行所谓的POJO映射,它只是在实例成员上使用反射,并使用一些有关如何将json中的键映射到实例成员名称的规则.*注:它适用于private成员以及public或package protected以及
如果它与实例成员的名称不匹配,那么它开始尝试匹配getXXX和setXXX方法,如果它不匹配任何东西,那么它就放弃了.
它使用注释提供的元数据进行映射和转换.
当你有源添加注释时,明确使用注释总是更好,然后没有猜测工作映射到什么.
记住显式总是优于隐式!
我现在正在为我的所有新项目创建JSON模式定义,以根据模式规则引擎记录什么是有效的JSON.这是记录数据结构和消除解析错误的好方法.
| 归档时间: |
|
| 查看次数: |
15331 次 |
| 最近记录: |