java怎么取json中的值

Java中,可以使用Jackson、Gson等库来取JSON中的值,以Jackson为例,先创建对应JSON结构的Java类,再用ObjectMapper将JSON字符串解析为该类对象,然后通过对象的getter方法获取值。

Java中,获取JSON中的值是一个常见的操作,通常涉及到使用第三方库来解析和处理JSON数据,以下是几种常用的方法,包括使用Jackson、Gson和org.json库来从JSON中取值。

java怎么取json中的值

使用Jackson库

Jackson是一个高性能的JSON处理库,支持将JSON数据绑定到Java对象,反之亦然,Jackson库包含三个核心模块:Databind、Core和Annotations,使用Jackson处理JSON数据非常简单、高效且灵活。

添加Jackson库依赖

在Maven项目中,可以通过在pom.xml文件中添加以下依赖来引入Jackson库:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.13.0</version>
</dependency>

解析JSON字符串

假设我们有一个JSON字符串如下:

{
    "name": "John",
    "age": 30,
    "address": {
        "street": "123 Main St",
        "city": "New York"
    },
    "phones": ["123-456-7890", "987-654-3210"]
}

为JSON数据创建对应的Java类:

public class Address {
    private String street;
    private String city;
    // getters and setters
}
public class Person {
    private String name;
    private int age;
    private Address address;
    private List<String> phones;
    // getters and setters
}

使用Jackson的ObjectMapper将JSON字符串解析为Java对象:

java怎么取json中的值

import com.fasterxml.jackson.databind.ObjectMapper;
public class JsonParser {
    public static void main(String[] args) {
        String jsonString = "{"name":"John","age":30,"address":{"street":"123 Main St","city":"New York"},"phones":["123-456-7890","987-654-3210"]}";
        ObjectMapper objectMapper = new ObjectMapper();
        try {
            Person person = objectMapper.readValue(jsonString, Person.class);
            System.out.println("Name: " + person.getName());
            System.out.println("Age: " + person.getAge());
            System.out.println("Street: " + person.getAddress().getStreet());
            System.out.println("City: " + person.getAddress().getCity());
            System.out.println("Phones: " + person.getPhones());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

通过上述代码,我们可以轻松获取JSON中的各个值,例如nameageaddressphones

使用Gson库

Gson是由Google提供的另一个流行的JSON处理库,具有简单易用的API,它可以将JSON字符串解析为Java对象,或者将Java对象序列化为JSON字符串。

添加Gson库依赖

在Maven项目中,可以通过在pom.xml文件中添加以下依赖来引入Gson库:

<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.8.6</version>
</dependency>

解析JSON字符串

使用Gson解析JSON字符串的步骤与Jackson类似:

import com.google.gson.Gson;
public class GsonParser {
    public static void main(String[] args) {
        String jsonString = "{"name":"John","age":30,"address":{"street":"123 Main St","city":"New York"},"phones":["123-456-7890","987-654-3210"]}";
        Gson gson = new Gson();
        Person person = gson.fromJson(jsonString, Person.class);
        System.out.println("Name: " + person.getName());
        System.out.println("Age: " + person.getAge());
        System.out.println("Street: " + person.getAddress().getStreet());
        System.out.println("City: " + person.getAddress().getCity());
        System.out.println("Phones: " + person.getPhones());
    }
}

使用org.json库

org.json库提供了另一种获取JSON值的方法,它允许你创建JSON对象和数组,并通过各种方法获取其中的值。

java怎么取json中的值

添加org.json库依赖

在Maven项目中,可以通过在pom.xml文件中添加以下依赖来引入org.json库:

<dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
    <version>20210307</version>
</dependency>

解析JSON字符串

使用org.json库解析JSON字符串并获取值的示例如下:

import org.json.JSONObject;
public class OrgJsonParser {
    public static void main(String[] args) {
        String jsonString = "{"name":"John","age":30,"address":{"street":"123 Main St","city":"New York"},"phones":["123-456-7890","987-654-3210"]}";
        JSONObject jsonObject = new JSONObject(jsonString);
        String name = jsonObject.getString("name");
        int age = jsonObject.getInt("age");
        JSONObject address = jsonObject.getJSONObject("address");
        String street = address.getString("street");
        String city = address.getString("city");
        System.out.println("Name: " + name);
        System.out.println("Age: " + age);
        System.out.println("Street: " + street);
        System.out.println("City: " + city);
    }
}

处理JSON数组

对于JSON数组,你可以使用上述库中的相应方法来获取数组中的值,以下是一些示例:

使用Jackson库处理JSON数组

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.core.type.TypeReference;
public class JacksonArrayParser {
    public static void main(String[] args) {
        String jsonArrayString = "[{"name":"John","age":30},{"name":"Alice","age":25}]";
        ObjectMapper objectMapper = new ObjectMapper();
        try {
            List<Person> persons = objectMapper.readValue(jsonArrayString, new TypeReference<List<Person>>() {});
            for (Person person : persons) {
                System.out.println("Name: " + person.getName() + ", Age: " + person.getAge());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

使用Gson库处理JSON数组

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
public class GsonArrayParser {
    public static void main(String[] args) {
        String jsonArrayString = "[{"name":"John","age":30},{"name":"Alice","age":25}]";
        Gson gson = new Gson();
        Type listType = new TypeToken<List<Person>>() {}.getType();
        List<Person> persons = gson.fromJson(jsonArrayString, listType);
        for (Person person : persons) {
            System.out.println("Name: " + person.getName() + ", Age: " + person.getAge());
        }
    }
}

使用org.json库处理JSON数组

import org.json.JSONArray;
import org.json.JSONObject;
public class OrgJsonArrayParser {
    public static void main(String[] args) {
        String jsonArrayString = "[{"name":"John","age":30},{"name":"Alice","age":25}]";
        JSONArray jsonArray = new JSONArray(jsonArrayString);
        for (int i = 0; i < jsonArray.length(); i++) {
            JSONObject jsonObject = jsonArray.getJSONObject(i);
            String name = jsonObject.getString("name");
            int age = jsonObject.getInt("age");
            System.out.println("Name: " + name + ", Age: " + age);
        }
    }
}

相关问答FAQs

问题1:如何在Java中使用Jackson库将Java对象转换为JSON字符串?
解答:可以使用Jackson的ObjectMapper类的writeValueAsString方法将Java对象转换为JSON字符串。

import com.fasterxml.jackson.databind.ObjectMapper;
public class JsonToStringExample {
    public static void main(String[] args) {
        Person person = new Person("John", 30, new Address("123 Main St", "New York"), Arrays.asList("123-456-7890", "987-654-3210"));
        ObjectMapper objectMapper = new ObjectMapper();
        try {
            String jsonString = objectMapper.writeValueAsString(person);
            System.out.println(jsonString);
        } catch (Exception e) {
            e.printStackTrace();
        }

原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/70237.html

(0)
酷盾叔的头像酷盾叔
上一篇 2025年7月21日 00:49
下一篇 2025年7月21日 00:54

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN