一、利用Jackson库
在上面的代码中,我们首先创建一个JSON字符串,并使用ObjectMapper类将其转换为JsonNode对象。然后我们可以使用get方法获取其属性值,如name、age和address.city。
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
public class JsonExample {
public static void main(String[] args) throws Exception {
String jsonString = "{\"name\":\"John\",\"age\":30,\"address\":{\"city\":\"New York\",\"state\":\"NY\"}}";
ObjectMapper objectMapper = new ObjectMapper();
JsonNode jsonNode = objectMapper.readTree(jsonString);
String name = jsonNode.get("name").asText();
int age = jsonNode.get("age").asInt();
String city = jsonNode.get("address").get("city").asText();
System.out.println(name);
System.out.println(age);
System.out.println(city);
}
}
二、利用Gson库
在上面的代码中,我们首先创建一个JSON字符串,并使用Gson类将其转换为JsonObject对象。然后我们可以使用get方法获取其属性值,如name、age和address.city。
需要注意的是,这里使用了Gson的fromJson方法来将JSON字符串转换为Java对象。第二个参数指定了要转换成的Java类类型,这里我们传入了JsonObject.class。
另外,需要注意JsonElement和JsonObject之间的区别。JsonElement是所有JSON元素(包括对象、数组、原始值等)的抽象基类,而JsonObject表示一个JSON对象。因此,在获取深层次属性时,需要先将JsonElement转换为JsonObject才能继续操作。
import com.google.gson.Gson;
import com.google.gson.JsonObject;
public class JsonExample {
public static void main(String[] args) throws Exception {
String jsonString = "{\"name\":\"John\",\"age\":30,\"address\":{\"city\":\"New York\",\"state\":\"NY\"}}";
Gson gson = new Gson();
JsonObject jsonObject = gson.fromJson(jsonString, JsonObject.class);
String name = jsonObject.get("name").getAsString();
int age = jsonObject.get("age").getAsInt();
String city = jsonObject.getAsJsonObject("address").get("city").getAsString();
System.out.println(name);
System.out.println(age);
System.out.println(city);
}
}