美文网首页
JSON对象转换为JAVA对象

JSON对象转换为JAVA对象

作者: 叫我小码哥 | 来源:发表于2018-09-09 12:15 被阅读0次

    我们在做项目的时候通常会遇到JSON字符串,我们所需要的数据就在这JSON字符串中,所以我们需要把JSON字符串中的数据拿出来,接下来我将告诉大家如何操作。

    {
        "country": "中国",
        "province": [{
                "city": "西安",
                "postoffice": 710126,
                "school": {
                    "name": "西安电子科技大学",
                    "major": "computer"
                },
                "capital": "true"
            },
            {
                "city": "北京",
                "postoffice": 826123,
                "school": {
                    "name": "北京大学",
                    "major": "fiance"
                },
                "capital": "true"
            },
            {
                "city": "温州市",
                "postoffice": 236556,
                "school": {
                    "name": "浙江大学",
                    "major": "accounting"
                },
                "capital": "false"
            }
        ]
    }
    

    首先查看我么接收到的JSON字符串在JSON校验器上检验查看JSON是否合法,如果校验器显示为正确的JSON这时候我们开始进行对象转换工作。


    image.png

    接着我们在我们项目的pom文件中中加入相关的依赖。

          <groupId>net.sf.json-lib</groupId>
          <artifactId>json-lib</artifactId>
          <version>2.4</version>
          <classifier>jdk15</classifier>
          </dependency>
    

    然后对照JSON的形式编写对应的java类(一般{} 对应的java类,[]对应的数组, :对应java类中的属性)

    public class InternationalSchool implements Serializable{
        private String country;
        private List<Province> province;
    
        public String getCountry() {
            return country;
        }
    
        public void setCountry(String country) {
            this.country = country;
        }
    
        public List<Province> getProvince() {
            return province;
        }
    
        public void setProvince(List<Province> province) {
            this.province = province;
        }
    
        @Override
        public String toString() {
            return "InternationalSchool{" +
                    "country='" + country + '\'' +
                    ", province=" + province +
                    '}';
        }
    }
    
    public class Province implements Serializable{ {
        private String city;
        private String postoffice;
        private List<School> school;
        private boolean capital;
    
        public String getCity() {
            return city;
        }
    
        public void setCity(String city) {
            this.city = city;
        }
    
        public String getPostoffice() {
            return postoffice;
        }
    
        public void setPostoffice(String postoffice) {
            this.postoffice = postoffice;
        }
    
        public List<School> getSchool() {
            return school;
        }
    
        public void setSchool(List<School> school) {
            this.school = school;
        }
    
        public boolean isCapital() {
            return capital;
        }
    
        public void setCapital(boolean capital) {
            this.capital = capital;
        }
    
        @Override
        public String toString() {
            return "Province{" +
                    "city='" + city + '\'' +
                    ", postoffice='" + postoffice + '\'' +
                    ", school=" + school +
                    ", capital=" + capital +
                    '}';
        }
    }
    
    public class School implements Serializable{ {
        private String name;
        private String major;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getMajor() {
            return major;
        }
    
        public void setMajor(String major) {
            this.major = major;
        }
    
        @Override
        public String toString() {
            return "School{" +
                    "name='" + name + '\'' +
                    ", major='" + major + '\'' +
                    '}';
        }
    }
    

    接着我们编写测试类进行测试。

    import net.sf.json.JSONObject;
    import java.util.List;
    
    public class Demo {
        public static void main(String[] args) {
            String jsonData = "{\n" +
                    "\t\"country\": \"中国\",\n" +
                    "\t\"province\": [{\n" +
                    "\t\t\t\"city\": \"西安\",\n" +
                    "\t\t\t\"postoffice\": 710126,\n" +
                    "\t\t\t\"school\": {\n" +
                    "\t\t\t\t\"name\": \"西安电子科技大学\",\n" +
                    "\t\t\t\t\"major\": \"computer\"\n" +
                    "\t\t\t},\n" +
                    "\t\t\t\"capital\": \"true\"\n" +
                    "\t\t},\n" +
                    "\t\t{\n" +
                    "\t\t\t\"city\": \"北京\",\n" +
                    "\t\t\t\"postoffice\": 826123,\n" +
                    "\t\t\t\"school\": {\n" +
                    "\t\t\t\t\"name\": \"北京大学\",\n" +
                    "\t\t\t\t\"major\": \"fiance\"\n" +
                    "\t\t\t},\n" +
                    "\t\t\t\"capital\": \"true\"\n" +
                    "\t\t},\n" +
                    "\t\t{\n" +
                    "\t\t\t\"city\": \"温州市\",\n" +
                    "\t\t\t\"postoffice\": 236556,\n" +
                    "\t\t\t\"school\": {\n" +
                    "\t\t\t\t\"name\": \"浙江大学\",\n" +
                    "\t\t\t\t\"major\": \"accounting\"\n" +
                    "\t\t\t},\n" +
                    "\t\t\t\"capital\": \"false\"\n" +
                    "\t\t}\n" +
                    "\t]\n" +
                    "}";
    
            JSONObject jsonObject= JSONObject.fromObject(jsonData);
            InternationalSchool inSchool = (InternationalSchool) JSONObject.toBean(jsonObject,InternationalSchool.class);
            System.out.println(inSchool);
            String country = inSchool.getCountry();
            List<Province> provinces = inSchool.getProvince();
            System.out.println("打印provinces的到的是provinces中的结果");
        }
    }
    

    最后查看运行结果


    image.png

    总结:JSON对象和JAVA对象转换常见的情况。
    JSON 对象装换为JAVA对象

    JSONObject jsonObject= JSONObject.fromObject(jsonData);
     InternationalSchool inSchool = (InternationalSchool) JSONObject.toBean(jsonObject,InternationalSchool.class);
    

    JAVA对象转换为JSON对象

    School school = new School();
    school.setMajor("computer");
    school.setName("西安电子科技大学");
    JSONObject jsonData = JSONObject.fromObject(school);
    System.out.println(jsonData);
    

    JSONArray对象转为JAVA对象

    JSONArray array = JSONArray.fromObject("province ");
     List<Person> list = JSONArray.toList(array, Person.class);
    

    相关文章

      网友评论

          本文标题:JSON对象转换为JAVA对象

          本文链接:https://www.haomeiwen.com/subject/kzirgftx.html