java - 如何使用 GSON 库在 java 中贪婪地提取 JSON?
问题描述
在此链接中,作者介绍了如何使用Java 的 GSON 库。主要示例展示了如何解析名为“staff.json”的 json 文件,如下所示:
{
"name": "mkyong",
"age": 35,
"position": [
"Founder",
"CTO",
"Writer"
],
"skills": [
"java",
"python",
"node",
"kotlin"
],
"salary": {
"2018": 14000,
"2012": 12000,
"2010": 10000
}
}
下面的 Java 代码可以读取文件,解析它,并创建一个加载所有上述数据的“Staff”Java 对象,最后打印名为“staff”的 Java 对象,并带有小写的“s”:
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
public class GsonExample2 {
public static void main(String[] args) {
Gson gson = new Gson();
try (Reader reader = new FileReader("c:\\projects\\staff.json")) {
// Convert JSON File to Java Object
Staff staff = gson.fromJson(reader, Staff.class);
// print staff object
System.out.println(staff);
} catch (IOException e) {
e.printStackTrace();
}
}
}
运行上面的代码会得到以下输出:
员工{name='mkyong', 年龄=35, 职位=[Founder, CTO, Writer], 技能=[java, python, node, kotlin], 薪水={2018=14000, 2012=12000, 2010=10000}}
假设我将以下内容附加到“staff.json”,使其看起来像这样:
{
"name": "mkyong",
"age": 35,
"position": [
"Founder",
"CTO",
"Writer"
],
"skills": [
"java",
"python",
"node",
"kotlin"
],
"salary": {
"2018": 14000,
"2012": 12000,
"2010": 10000
}
}
\x00\x0d;ldlk4jkladsfl;kmasdlk\d\g\sd===dsafdsfagf\dgas56yjghg\dafd\g\dfa
fdsaffdas]\fg\n\n\n\n\n\n\n\\t\t\t\t\t\t\\\\\s
adfdgt\\\g\\\fdgdf\sg\df<-----END OF FILE HERE NOW
如您所见,我基本上是在附加一堆显然不是 Json 格式的垃圾。
我的问题:假设您不知道文件中有多少 json 格式的数据(即技能中可能有数百个项目),我如何修改上面的 Java 代码以提取尽可能多的 json 并忽略垃圾我在新的 staff.json 文件中附加了?目标是从第一个 staff.json 输入文件中获得与上面显示的完全相同的输出。