欢迎访问宙启技术站
智能推送

Java中如何使用函数解析JSON格式的数据?

发布时间:2023-06-12 06:48:27

在Java中,解析JSON格式的数据通常有两种方法:手动解析和使用JSON库。

手动解析是指使用Java语言自带的基础数据类型和数据结构,逐个解析JSON数据的每个字段。手动解析需要对JSON格式的语法有一定的了解,比较繁琐,容易出错,但是可以灵活处理数据。以下是一个使用手动解析的例子:

import java.util.ArrayList;
import java.util.HashMap;
import org.json.*;

public class JsonParser {

    public static void main(String[] args) {
        String jsonStr = "{\"name\":\"张三\",\"age\":18,\"hobbies\":[\"pingpong\",\"football\"]}";
        
        try {
            JSONObject jsonObj = new JSONObject(jsonStr);
            
            String name = jsonObj.getString("name");
            int age = jsonObj.getInt("age");
            JSONArray hobbiesJsonArray = jsonObj.getJSONArray("hobbies");
            ArrayList<String> hobbies = new ArrayList<String>();
            for (int i = 0; i < hobbiesJsonArray.length(); i++) {
                String hobby = hobbiesJsonArray.getString(i);
                hobbies.add(hobby);
            }
            
            HashMap<String, Object> map = new HashMap<String, Object>();
            map.put("name", name);
            map.put("age", age);
            map.put("hobbies", hobbies);
            
            System.out.println(map);
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }
}

使用JSON库是指使用第三方的JSON库,如Google的Gson库,Apache的Jackson库等。使用JSON库需要在项目中导入相应的依赖包,使用起来比较简便,可以自动将JSON数据映射成Java对象。以下是一个使用Jackson库的例子:

import java.util.List;
import com.fasterxml.jackson.databind.ObjectMapper;

public class JsonParser {

    public static void main(String[] args) {
        String jsonStr = "[{\"name\":\"张三\",\"age\":18,\"hobbies\":[\"pingpong\",\"football\"]},"
                + "{\"name\":\"李四\",\"age\":20,\"hobbies\":[\"basketball\",\"swimming\"]}]";
        
        ObjectMapper objectMapper = new ObjectMapper();
        try {
            List<Person> persons = objectMapper.readValue(jsonStr, new TypeReference<List<Person>>(){});
            for (Person person : persons) {
                System.out.println(person);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static class Person {
        private String name;
        private int age;
        private List<String> hobbies;
        
        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;
        }
        public List<String> getHobbies() {
            return hobbies;
        }
        public void setHobbies(List<String> hobbies) {
            this.hobbies = hobbies;
        }
        @Override
        public String toString() {
            return "Person [name=" + name + ", age=" + age + ", hobbies=" + hobbies + "]";
        }
    }
}

以上是两种常用的解析JSON格式数据的方法,具体应该根据项目需求和实际情况来选择。