Java解析JSON数据详解
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于Web应用程序中。在Java开发中,我们经常需要解析JSON数据。本攻略将介绍Java解析JSON数据的方法,包括使用Java内置库和第三方库。
使用Java内置库解析JSON数据
Java内置了一个JSON解析器,可以使用它来解析JSON数据。以下是使用Java内置库解析JSON数据的示例代码:
import org.json.JSONArray;
import org.json.JSONObject;
public class JsonParser {
public static void main(String[] args) {
String jsonStr = "{\"name\":\"John\", \"age\":30, \"city\":\"New York\"}";
JSONObject jsonObj = new JSONObject(jsonStr);
String name = jsonObj.getString("name");
int age = jsonObj.getInt("age");
String city = jsonObj.getString("city");
System.out.println("Name: " + name);
System.out.println("Age: " + age);
System.out.println("City: " + city);
}
}
在上述代码中,我们使用JSONObject
类来解析JSON数据。首先,我们将JSON字符串转换为JSONObject
对象。然后,我们可以使用getString()
和getInt()
等方法来获取JSON对象中的属性值。
使用第三方库解析JSON数据
除了Java内置库,还有许多第三方库可以用于解析JSON数据。以下是使用Gson库解析JSON数据的示例代码:
import com.google.gson.Gson;
import com.google.gson.JsonObject;
public class JsonParser {
public static void main(String[] args) {
String jsonStr = "{\"name\":\"John\", \"age\":30, \"city\":\"New York\"}";
Gson gson = new Gson();
JsonObject jsonObj = gson.fromJson(jsonStr, JsonObject.class);
String name = jsonObj.get("name").getAsString();
int age = jsonObj.get("age").getAsInt();
String city = jsonObj.get("city").getAsString();
System.out.println("Name: " + name);
System.out.println("Age: " + age);
System.out.println("City: " + city);
}
}
在上述代码中,我们使用Gson库来解析JSON数据。首先,我们创建一个Gson
对象。然后,使用fromJson()
方法将JSON字符串转换为JsonObject
对象。最后,我们可以使用getAsString()
和getAsInt()
等方法来获取JSON对象中的属性值。
示例1:使用Java内置库解析JSON数组
以下是一个示例,演示如何使用Java内置库解析JSON数组:
import org.json.JSONArray;
import org.json.JSONObject;
public class JsonParser {
public static void main(String[] args) {
String jsonStr = "[{\"name\":\"John\", \"age\":30}, {\"name\":\"Mary\", \"age\":25}]";
JSONArray jsonArray = new JSONArray(jsonStr);
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObj = jsonArray.getJSONObject(i);
String name = jsonObj.getString("name");
int age = jsonObj.getInt("age");
System.out.println("Name: " + name);
System.out.println("Age: " + age);
}
}
}
在上述代码中,我们使用JSONArray
类来解析JSON数组。首先,我们将JSON字符串转换为JSONArray
对象。然后,我们可以使用getJSONObject()
方法来获取JSON数组中的每个对象,并使用getString()
和getInt()
等方法来获取JSON对象中的属性值。
示例2:使用三方库解析复杂JSON数据
以下是一个示例,演示如何使用Gson库解析复杂JSON数据:
import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
public class JsonParser {
public static void main(String[] args) {
String jsonStr = "{\"name\":\"John\", \"age\":30, \"address\":{\"city\":\"New York\", \"state\":\"NY\"}, \"hobbies\":[\"reading\", \"traveling\"]}";
Gson gson = new Gson();
JsonObject jsonObj = gson.fromJson(jsonStr, JsonObject.class);
String name = jsonObj.get("name").getAsString();
int age = jsonObj.get("age").getAsInt();
JsonObject addressObj = jsonObj.getAsJsonObject("address");
String city = addressObj.get("city").getAsString();
String state = addressObj.get("state").getAsString();
JsonArray hobbiesArr = jsonObj.getAsJsonArray("hobbies");
for (int i = 0; i < hobbiesArr.size(); i++) {
String hobby = hobbiesArr.get(i).getAsString();
System.out.println("Hobby: " + hobby);
}
System.out.println("Name: " + name);
System.out.println("Age: " + age);
System.out.println("City: " + city);
System.out.println("State: " + state);
}
}
在上述代码中,我们使用G库来解析复杂JSON数据。首先,我们创建一个Gson
对象。然后,我们使用fromJson()
方法将JSON字符串转换为JsonObject
对象。最后,我们可以使用getAsJsonObject()
和getAsJsonArray()
等方法来获取JSON对象中的复属性值。
总结
通过本攻略,我们了解了Java解析JSON数据的方法,包括使用Java内置库和第三方库。我们提供了两个示例,演示了如何使用Java内置库和Gson库来解析JSON数据。