欢迎关注微信公众号:数据科学与艺术 作者WX:superhe199
解析复杂嵌套式的JSON数据,可以使用Java中的JsonReader类或者JsonParser类来实现。
以下是使用JsonReader类的示例代码:
import java.io.StringReader;
import java.util.ArrayList;
import java.util.List;
import com.google.gson.stream.JsonReader;
public class JsonParserExample {
public static void main(String[] args) {
String json = "{\"name\":\"John\",\"age\":30,\"city\":\"New York\",\"hobbies\":[\"reading\",\"traveling\"]}";
try (JsonReader reader = new JsonReader(new StringReader(json))) {
reader.beginObject(); // 开始解析JSON对象
while (reader.hasNext()) {
String name = reader.nextName(); // 获取属性名
if (name.equals("name")) {
String value = reader.nextString(); // 获取属性值
System.out.println("Name: " + value);
} else if (name.equals("age")) {
int value = reader.nextInt(); // 获取属性值
System.out.println("Age: " + value);
} else if (name.equals("city")) {
String value = reader.nextString(); // 获取属性值
System.out.println("City: " + value);
} else if (name.equals("hobbies")) {
reader.beginArray(); // 开始解析数组
List<String> hobbies = new ArrayList<>();
while (reader.hasNext()) {
String value = reader.nextString(); // 获取数组元素值
hobbies.add(value);
}
reader.endArray(); // 结束解析数组
System.out.println("Hobbies: " + hobbies);
} else {
reader.skipValue(); // 忽略未知的属性或值
}
}
reader.endObject(); // 结束解析JSON对象
} catch (Exception e) {
e.printStackTrace();
}
}
}
上述代码解析了以下JSON数据:
{
"name": "John",
"age": 30,
"city": "New York",
"hobbies": ["reading", "traveling"]
}
输出结果如下:
Name: John
Age: 30
City: New York
Hobbies: [reading, traveling]