您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
14_JSON_解析器Jackson_json转Java对象
发布时间:2022-10-01 12:11:59编辑:雪饮阅读()
以上篇最终的hashMap转出去的json字符串为例:
这里是为了演示将json字符串转回到java对象。
这里需要预备一个java类,由于这个待转换的字符串里面有company1和company2,所以我们要预备的这个java类需要有company1和company2这两个getter和setter的方法,并且要有默认无参构造,对应的这个json字符串里面每个company1或company2是对应我们的company类,则company类也最好有无参构造,那么对应的person则更不必说了。
为什么需要无参构造?,人家转换成java对象时候,如何给你构造?他又不知道你每个构造怎样传参,我觉得人家肯定是通过getter和setter来判断的。
除了无参构造,相关类最好也有自己的toString方法,否则转换完成后只能看到java对象的地址值,而不能看到实际数据。
所以person类调整如:
package package3.servlet;
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public Person() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
company类调整如:
package package3.servlet;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.ArrayList;
import java.util.Date;
public class Company {
private String company_name;
private double salary;
private ArrayList<Person> persons;
private Person legalPerson;
private Date register_date;
public Company(String company_name, double salary, ArrayList<Person> persons, Person legalPerson, Date register_date) {
this.company_name = company_name;
this.salary = salary;
this.persons = persons;
this.legalPerson = legalPerson;
this.register_date = register_date;
}
public Company() {
}
public String getCompany_name() {
return company_name;
}
public void setCompany_name(String company_name) {
this.company_name = company_name;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
public ArrayList<Person> getPersons() {
return persons;
}
public void setPersons(ArrayList<Person> persons) {
this.persons = persons;
}
public Person getLegalPerson() {
return legalPerson;
}
public void setLegalPerson(Person legalPerson) {
this.legalPerson = legalPerson;
}
@JsonFormat(pattern="yyyy-MM-dd")
public Date getRegister_date() {
return register_date;
}
public void setRegister_date(Date register_date) {
this.register_date = register_date;
}
@Override
public String toString() {
return "Company{" +
"company_name='" + company_name + '\'' +
", salary=" + salary +
", persons=" + persons +
", legalPerson=" + legalPerson +
", register_date=" + register_date +
'}';
}
}
我们需要新建的一个容下company1和company2的类BigCompany类如:
package package3.servlet;
public class BigCompany {
private Company company1;
private Company company2;
public Company getCompany1() {
return company1;
}
public Company getCompany2() {
return company2;
}
@Override
public String toString() {
return "BigCompany{" +
"company1=" + company1 +
", company2=" + company2 +
'}';
}
}
最后我们实现json字符串转java对象的servlet如:
package package3.servlet;
import com.fasterxml.jackson.databind.ObjectMapper;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/ServletTest")
public class ServletTest extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ObjectMapper objectMapper = new ObjectMapper();
String json_str="{\"company1\":{\"company_name\":\"韦恩企业\",\"salary\":130000.0,\"persons\":[{\"name\":\"雪饮\",\"age\":24},{\"name\":\"布鲁斯韦恩\",\"age\":28},{\"name\":\"murphy pendleton\",\"age\":24},{\"name\":\"kasumi\",\"age\":28}],\"legalPerson\":{\"name\":\"布鲁斯韦恩\",\"age\":28},\"register_date\":\"2022-10-01\"},\"company2\":{\"company_name\":\"雪饮网络科技\",\"salary\":150000.0,\"persons\":[{\"name\":\"雪饮\",\"age\":24},{\"name\":\"布鲁斯韦恩\",\"age\":28},{\"name\":\"murphy pendleton\",\"age\":24},{\"name\":\"kasumi\",\"age\":28}],\"legalPerson\":{\"name\":\"kasumi\",\"age\":28},\"register_date\":\"2022-10-01\"}}";
response.setContentType("text/html;charset=utf-8");
response.getWriter().write(objectMapper.readValue(json_str,BigCompany.class).toString());
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
关键字词:JSON,解析器,Jackson_json,转Java对象
上一篇:13_JSON_解析器Jackson_java对象转json_List&Map(HashMap与Object深入理解)
下一篇:15_案例_校验用户名是否存在(setContentType对于jquery ajax的get的影响及writeValue与writeValueAsString的区别)
相关文章
- 13_JSON_解析器Jackson_java对象转json_List&Map(Hash
- 12_JSON_解析器Jackson_java对象转json_注解(JsonIgno
- 11_JSON_解析器Jackson_java对象转json
- 安卓okhttp发送json与解析json(支持嵌套)
- webman-请求-判断客户端是否接受json返回、获得请求的
- webman-快速開始-簡單示例-返回json、xml及jsonp
- workerman自定义协议-jsonl数据包(首部无符号int四字节
- phpunit断言-assertJsonStringEqualsJsonString
- phpunit断言-assertJsonStringEqualsJsonFile
- phpunit断言-assertJsonFileEqualsJsonFile