用JAVA递归解析json文件
我有一个json文件,其中包含包含章节和子章节的章节。。。。章节和子章节的数量并不总是相同的:例如用JAVA递归解析json文件,java,json,Java,Json,我有一个json文件,其中包含包含章节和子章节的章节。。。。章节和子章节的数量并不总是相同的:例如 { "IDCours" : "CS10.44", "title": " .... ", "chapters": [ { "idChapter": "1", "title": "Introduction", "chapters": [ { "idChapter": "1.1",
{
"IDCours" : "CS10.44",
"title": " .... ",
"chapters": [
{
"idChapter": "1",
"title": "Introduction",
"chapters": [
{
"idChapter": "1.1",
"title": "basics",
"content" : " blab bla blab "
},
{
"idChapter": "1.2",
"title": "basics",
"content" : " blab bla blab "
}
]
},
{
"idChapter": "2",
"title": "..... ",
"chapters": [
{
"idChapter": "2.1",
"title": " .... ",
"content" : " blab bla blab "
},
{
"idChapter": "2.2",
"title": ".....",
"content" : " blab bla blab ",
"chapters": [
{
"idChapter": "2.2.1",
"title": " .... ",
"content" : " blab bla blab "
}
]
}
]
}
]
}
因此,我认为应该递归进行,因为我不知道文件中有多少章节和子章节,子章节,你不需要递归进行。我通常使用jackson库来处理Json,所以这里介绍如何实现它
public class mainClass {
String IDCours;
String title;
List<Chapters> chapters;
public static class Chapters {
double idChapter;
String title;
List<InnerChapters> chapters;
@JsonIgnoreProperties(ignoreUnknown = true)
public static class InnerChapters {
double idChapter;
String title;
String content;
List<InnerChapters> chapters;
}
}
}
public类mainClass{
字符串IDCours;
字符串标题;
列出各章;
公共静态类章节{
双章;
字符串标题;
列出各章;
@JsonIgnoreProperties(ignoreUnknown=true)
公共静态类{
双章;
字符串标题;
字符串内容;
列出各章;
}
}
}
并使用方法解析json,如:
public static final ObjectMapper objMapper;
static {
objMapper= new ObjectMapper();
objMapper.registerModule(new JavaTimeModule());
}
public static <T> List<T> fromJsonToList(String json, Class<T> clazz) throws IOException {
CollectionType customClassCollection = MAPPER.getTypeFactory().constructCollectionType(List.class, clazz);
return objMapper.readValue(json, customClassCollection);
}
公共静态最终对象映射器objMapper;
静止的{
objMapper=newObjectMapper();
registerModule(新的JavaTimeModule());
}
来自JSONTOLIST的公共静态列表(字符串json,类clazz)引发IOException{
CollectionType customClassCollection=MAPPER.getTypeFactory().ConstructionCollectionType(List.class,clazz);
返回objMapper.readValue(json,customClassCollection);
}
@如果没有章节列表,JsonIgnoreProperties注释将忽略并不会抛出异常,并继续打包json。
试试看。你试过什么?请发布您的Java代码,以及哪些代码不能像您期望的那样工作。在当前状态下,这可能因为太宽而关闭。对我的问题有任何帮助吗?是的,发布代码和您迄今为止尝试的内容。我不认为有人会为您编写答案,它是递归完成的,但由JSON解析器完成,而不是由您完成。您所需要的只是众多JSON库中的一个。谢谢您的回答,但我是一名新的编码人员,我不知道如何使用您发布的代码,它在主类中还是在何处?很抱歉我的问题,谢谢你的帮助。你需要创建一个新的类,可以随意命名。另外,您必须导入Jackson库才能使用我的代码来打包Json。提前:如果你是“新编码”,我认为谈论递归方法不是一个好主意@oan我不想听起来很刺耳,把它作为最好的建议,如果你甚至不知道代码应该放在哪里,你应该先从基础开始,在进入这个“高级”问题之前,从控制台基础程序开始,然后进入swing,然后尝试web,等等,否则学习曲线会更难,告诉你一个人做了相反的事情,学习更难:)@BugsForBreakfast谢谢你的建议,我会考虑的:)如果我打扰了你,我很抱歉