Java 杰克逊';s json解析
我是一名研究生,正在尝试学习如何使用Jackson解析json到对象Java 杰克逊';s json解析,java,json,jackson,jackson2,jackson-databind,Java,Json,Jackson,Jackson2,Jackson Databind,我是一名研究生,正在尝试学习如何使用Jackson解析json到对象 I'm currently trying to parse this { "EmptyMessage":"", "EmptyMessageType":0, "Result":[ { "HasEducationPlan":false, "MembersUrl":"https://student.ulife.com.br/DisciplineMem
I'm currently trying to parse this
{
"EmptyMessage":"",
"EmptyMessageType":0,
"Result":[
{
"HasEducationPlan":false,
"MembersUrl":"https://student.ulife.com.br/DisciplineMembersList/Index?cd=zzlaAJL5JngfbcsZdA37nw%3d%3d",
"CalendarUrl":"https://student.ulife.com.br/Calendar?cd=zzlaAJL5JngfbcsZdA37nw%3d%3d",
"EvaluationUrl":"https://www.ulife.com.br/Student/PAT/Grades.aspx?cd=zzlaAJL5JngfbcsZdA37nw%3d%3d",
"DiscussionUrl":"https://www.ulife.com.br/Student/PAT/DiscussionForum.aspx?cld=zzlaAJL5JngfbcsZdA37nw%3d%3d",
"ContentUrl":"https://student.ulife.com.br/Lesson/Index?cd=zzlaAJL5JngfbcsZdA37nw%3d%3d",
"GradeUrl":"https://student.ulife.com.br/Grade/Index?cd=zzlaAJL5JngfbcsZdA37nw%3d%3d&st=ACFdBAwNYJcCXLzBpH3P2A%3d%3d",
"CourseUrl":"https://www.ulife.com.br/OrganizationCourse/OrganizationCourseDetail.aspx?o=NaltKyU6OKV8RcmQsxNuow%3d%3d&c=pfRucFwwUMlY%2fZLlwzIjUA%3d%3d",
"ClassUrl":"/classes/classpage.aspx?ClassId=HxpJ4cUZ4IMKkDlj0kHcGg%3d%3d",
"PerformanceUrl":null,
"FrequencyUrl":"/Frequency/ClassDisciplineFrequency.aspx?d=nY1NINmbyIbvqz57uw6Opw%3d%3d&cn=qOJe4AcqjlNHYLakMKbXN9xDtpV0kzjJS%2bcMI7I5%2bEA%3d",
"DisciplineUrl":"/PAT/Discipline.aspx?p=VowhoBFwb8B%2b9wSJMxKnGVSJJ%2bjEks6OW%2fm%2bxzwPHeg%3d",
"ChallengeUrl":"https://www.ulife.com.br/Controls/EnadeChallenge.aspx?scd=22405329",
"ViewMembers":true,
"NewFeatureEnabled":true,
"StudentClassDisciplineID":22405329,
"StudentID":0,
"ClassDisciplineID":710835,
"StudentClassDisciplineStatus":1,
"DisciplineContentID":610112,
"HasDisciplineContent":true,
"CurriculumEducationPlanID":0,
"OrganizationID":2418,
"DisciplineID":336026,
"DisciplineName":"Cálculo Diferencial",
"IsMultiOrganization":false,
"Enrolled":true,
"ClassID":586235,
"ClassName":"MAT2AN-CMA-740642",
"GradeID":3421,
"GradeName":"Graduação (Teórica)",
"OrganizationCourseID":35873,
"OrganizationCourseName":"Matemática",
"OriginOrganizationCourseID":0,
"ModuleStepID":246695,
"ModuleStepName":"UNIBH_2019/1",
"ModuleStepStartDate":"2019-01-01T00:00:00",
"ModuleStepEndDate":"2019-07-31T00:00:00",
"HasFrequency":false,
"HasEvaluationPeriod":false,
"HasEnade":false,
"StudentActive":true,
"EnadeChallengeTypeId":0,
"HasDiscussionForum":false,
"NewLessonCategoryCount":0,
"Year":0,
"DisciplineContentCoverImageUrl":"",
"LessonCount":2
},
{
"HasEducationPlan":false,
"MembersUrl":"https://student.ulife.com.br/DisciplineMembersList/Index?cd=0%2fxd%2bn56aFe%2fgp2xBqXe0Q%3d%3d",
"CalendarUrl":"https://student.ulife.com.br/Calendar?cd=0%2fxd%2bn56aFe%2fgp2xBqXe0Q%3d%3d",
"EvaluationUrl":"https://www.ulife.com.br/Student/PAT/Grades.aspx?cd=0%2fxd%2bn56aFe%2fgp2xBqXe0Q%3d%3d",
"DiscussionUrl":"https://www.ulife.com.br/Student/PAT/DiscussionForum.aspx?cld=0%2fxd%2bn56aFe%2fgp2xBqXe0Q%3d%3d",
"ContentUrl":"https://student.ulife.com.br/Lesson/Index?cd=0%2fxd%2bn56aFe%2fgp2xBqXe0Q%3d%3d",
"GradeUrl":"https://student.ulife.com.br/Grade/Index?cd=0%2fxd%2bn56aFe%2fgp2xBqXe0Q%3d%3d&st=ACFdBAwNYJcCXLzBpH3P2A%3d%3d",
"CourseUrl":"https://www.ulife.com.br/OrganizationCourse/OrganizationCourseDetail.aspx?o=NaltKyU6OKV8RcmQsxNuow%3d%3d&c=P56mWzUmVubJFqSYQZZBTA%3d%3d",
"ClassUrl":"/classes/classpage.aspx?ClassId=ToF93aLWQkJzIIFV0b3mSw%3d%3d",
"PerformanceUrl":null,
"FrequencyUrl":"/Frequency/ClassDisciplineFrequency.aspx?d=JYmXKwR4RW0MX%2bR8Kwys%2fQ%3d%3d&cn=w1DRd2w9Q%2fcMoXjZ3pLs6D5hDrzbwNfMwAuvQmPULHM%3d",
"DisciplineUrl":"/PAT/Discipline.aspx?p=PL8%2f48nLqJNCG%2f99VuSqK3S5kwMhst8pjW83%2fJ673F4%3d",
"ChallengeUrl":"https://www.ulife.com.br/Controls/EnadeChallenge.aspx?scd=22406703",
"ViewMembers":true,
"NewFeatureEnabled":true,
"StudentClassDisciplineID":22406703,
"StudentID":0,
"ClassDisciplineID":711306,
"StudentClassDisciplineStatus":1,
"DisciplineContentID":0,
"HasDisciplineContent":false,
"CurriculumEducationPlanID":0,
"OrganizationID":2418,
"DisciplineID":345469,
"DisciplineName":"Física - Mecânica da Partícula",
"IsMultiOrganization":false,
"Enrolled":false,
"ClassID":586740,
"ClassName":"CCP1AN-CMA-740631",
"GradeID":3421,
"GradeName":"Graduação (Teórica)",
"OrganizationCourseID":36597,
"OrganizationCourseName":"Ciência da Computação",
"OriginOrganizationCourseID":0,
"ModuleStepID":246695,
"ModuleStepName":"UNIBH_2019/1",
"ModuleStepStartDate":"2019-01-01T00:00:00",
"ModuleStepEndDate":"2019-07-31T00:00:00",
"HasFrequency":false,
"HasEvaluationPeriod":false,
"HasEnade":false,
"StudentActive":true,
"EnadeChallengeTypeId":0,
"HasDiscussionForum":false,
"NewLessonCategoryCount":0,
"Year":0,
"DisciplineContentCoverImageUrl":"",
"LessonCount":0
},
{
"HasEducationPlan":false,
"MembersUrl":"https://student.ulife.com.br/DisciplineMembersList/Index?cd=CNqtVoDvLfuYHUOhGmzOQg%3d%3d",
"CalendarUrl":"https://student.ulife.com.br/Calendar?cd=CNqtVoDvLfuYHUOhGmzOQg%3d%3d",
"EvaluationUrl":"https://www.ulife.com.br/Student/PAT/Grades.aspx?cd=CNqtVoDvLfuYHUOhGmzOQg%3d%3d",
"DiscussionUrl":"https://www.ulife.com.br/Student/PAT/DiscussionForum.aspx?cld=CNqtVoDvLfuYHUOhGmzOQg%3d%3d",
"ContentUrl":"https://student.ulife.com.br/Lesson/Index?cd=CNqtVoDvLfuYHUOhGmzOQg%3d%3d",
"GradeUrl":"https://student.ulife.com.br/Grade/Index?cd=CNqtVoDvLfuYHUOhGmzOQg%3d%3d&st=ACFdBAwNYJcCXLzBpH3P2A%3d%3d",
"CourseUrl":"https://www.ulife.com.br/OrganizationCourse/OrganizationCourseDetail.aspx?o=NaltKyU6OKV8RcmQsxNuow%3d%3d&c=aYIoCh5SkcHin16ztI9Wcw%3d%3d",
"ClassUrl":"/classes/classpage.aspx?ClassId=V%2bsTc0p2Tb3aFsnKomueEg%3d%3d",
"PerformanceUrl":null,
"FrequencyUrl":"/Frequency/ClassDisciplineFrequency.aspx?d=RKhkP9%2fdtqRgJUTsCynP1A%3d%3d&cn=w1DRd2w9Q%2fcMoXjZ3pLs6G8uT7M0JST1CtE5q%2f3qds4%3d",
"DisciplineUrl":"/PAT/Discipline.aspx?p=RvH7tbqmb2d5Ti%2b34CzYYV44YcyWPZJIZVJggmJ2lug%3d",
"ChallengeUrl":"https://www.ulife.com.br/Controls/EnadeChallenge.aspx?scd=22399401",
"ViewMembers":true,
"NewFeatureEnabled":true,
"StudentClassDisciplineID":22399401,
"StudentID":0,
"ClassDisciplineID":711023,
"StudentClassDisciplineStatus":1,
"DisciplineContentID":609052,
"HasDisciplineContent":true,
"CurriculumEducationPlanID":0,
"OrganizationID":2418,
"DisciplineID":337155,
"DisciplineName":"Institucional I",
"IsMultiOrganization":true,
"Enrolled":true,
"ClassID":586433,
"ClassName":"CCP1AN-CMA-740638",
"GradeID":3401,
"GradeName":"Graduação",
"OrganizationCourseID":33548,
"OrganizationCourseName":"Vinte por cento",
"OriginOrganizationCourseID":0,
"ModuleStepID":246829,
"ModuleStepName":"UNIBH_2019/1",
"ModuleStepStartDate":"2019-01-01T00:00:00",
"ModuleStepEndDate":"2019-07-31T00:00:00",
"HasFrequency":false,
"HasEvaluationPeriod":false,
"HasEnade":false,
"StudentActive":true,
"EnadeChallengeTypeId":0,
"HasDiscussionForum":false,
"NewLessonCategoryCount":23,
"Year":0,
"DisciplineContentCoverImageUrl":"",
"LessonCount":17
},
{
"HasEducationPlan":false,
"MembersUrl":"https://student.ulife.com.br/DisciplineMembersList/Index?cd=MWRz4NHw1JSCymJKHyvoMQ%3d%3d",
"CalendarUrl":"https://student.ulife.com.br/Calendar?cd=MWRz4NHw1JSCymJKHyvoMQ%3d%3d",
"EvaluationUrl":"https://www.ulife.com.br/Student/PAT/Grades.aspx?cd=MWRz4NHw1JSCymJKHyvoMQ%3d%3d",
"DiscussionUrl":"https://www.ulife.com.br/Student/PAT/DiscussionForum.aspx?cld=MWRz4NHw1JSCymJKHyvoMQ%3d%3d",
"ContentUrl":"https://student.ulife.com.br/Lesson/Index?cd=MWRz4NHw1JSCymJKHyvoMQ%3d%3d",
"GradeUrl":"https://student.ulife.com.br/Grade/Index?cd=MWRz4NHw1JSCymJKHyvoMQ%3d%3d&st=ACFdBAwNYJcCXLzBpH3P2A%3d%3d",
"CourseUrl":"https://www.ulife.com.br/OrganizationCourse/OrganizationCourseDetail.aspx?o=NaltKyU6OKV8RcmQsxNuow%3d%3d&c=P56mWzUmVubJFqSYQZZBTA%3d%3d",
"ClassUrl":"/classes/classpage.aspx?ClassId=K2fUaz1lIjYVYZWVDbIesw%3d%3d",
"PerformanceUrl":null,
"FrequencyUrl":"/Frequency/ClassDisciplineFrequency.aspx?d=psxKtayBeShMNC%2fkhyMDRg%3d%3d&cn=fH8YHJoBctFFuBbe3vjGmPI3JKSMxWHK8TQxvSLpT60%3d",
"DisciplineUrl":"/PAT/Discipline.aspx?p=4D%2bP9RSBlvW5IEgbTzUVxhIucuZyACIN%2bmIa58PxyT4%3d",
"ChallengeUrl":"https://www.ulife.com.br/Controls/EnadeChallenge.aspx?scd=22403590",
"ViewMembers":true,
"NewFeatureEnabled":true,
"StudentClassDisciplineID":22403590,
"StudentID":0,
"ClassDisciplineID":711473,
"StudentClassDisciplineStatus":1,
"DisciplineContentID":611058,
"HasDisciplineContent":true,
"CurriculumEducationPlanID":0,
"OrganizationID":2418,
"DisciplineID":345470,
"DisciplineName":"Laboratório de Práticas Integradas 1A",
"IsMultiOrganization":false,
"Enrolled":true,
"ClassID":586925,
"ClassName":"CCP1AN-CMA1-740670",
"GradeID":3432,
"GradeName":"Graduação (Prática)",
"OrganizationCourseID":36597,
"OrganizationCourseName":"Ciência da Computação",
"OriginOrganizationCourseID":0,
"ModuleStepID":246695,
"ModuleStepName":"UNIBH_2019/1",
"ModuleStepStartDate":"2019-01-01T00:00:00",
"ModuleStepEndDate":"2019-07-31T00:00:00",
"HasFrequency":false,
"HasEvaluationPeriod":false,
"HasEnade":false,
"StudentActive":true,
"EnadeChallengeTypeId":0,
"HasDiscussionForum":false,
"NewLessonCategoryCount":0,
"Year":0,
"DisciplineContentCoverImageUrl":"",
"LessonCount":2
},
{
"HasEducationPlan":false,
"MembersUrl":"https://student.ulife.com.br/DisciplineMembersList/Index?cd=TZuLq3PpEtt31xeZ06SGsw%3d%3d",
"CalendarUrl":"https://student.ulife.com.br/Calendar?cd=TZuLq3PpEtt31xeZ06SGsw%3d%3d",
"EvaluationUrl":"https://www.ulife.com.br/Student/PAT/Grades.aspx?cd=TZuLq3PpEtt31xeZ06SGsw%3d%3d",
"DiscussionUrl":"https://www.ulife.com.br/Student/PAT/DiscussionForum.aspx?cld=TZuLq3PpEtt31xeZ06SGsw%3d%3d",
"ContentUrl":"https://student.ulife.com.br/Lesson/Index?cd=TZuLq3PpEtt31xeZ06SGsw%3d%3d",
"GradeUrl":"https://student.ulife.com.br/Grade/Index?cd=TZuLq3PpEtt31xeZ06SGsw%3d%3d&st=ACFdBAwNYJcCXLzBpH3P2A%3d%3d",
"CourseUrl":"https://www.ulife.com.br/OrganizationCourse/OrganizationCourseDetail.aspx?o=NaltKyU6OKV8RcmQsxNuow%3d%3d&c=P56mWzUmVubJFqSYQZZBTA%3d%3d",
"ClassUrl":"/classes/classpage.aspx?ClassId=4hQOURLROzT45urCqEmG0g%3d%3d",
"PerformanceUrl":null,
"FrequencyUrl":"/Frequency/ClassDisciplineFrequency.aspx?d=g%2fod%2bQ9Lh69WQPUqIkHAVA%3d%3d&cn=fH8YHJoBctFFuBbe3vjGmNudp6v634AToqCmBdiwWpY%3d",
"DisciplineUrl":"/PAT/Discipline.aspx?p=GblZUfavs44hSRDDXEjIoGIn%2b0Yf4zcvALpxLCpX7CQ%3d",
"ChallengeUrl":"https://www.ulife.com.br/Controls/EnadeChallenge.aspx?scd=22397399",
"ViewMembers":true,
"NewFeatureEnabled":true,
"StudentClassDisciplineID":22397399,
"StudentID":0,
"ClassDisciplineID":711475,
"StudentClassDisciplineStatus":1,
"DisciplineContentID":609158,
"HasDisciplineContent":true,
"CurriculumEducationPlanID":0,
"OrganizationID":2418,
"DisciplineID":345325,
"DisciplineName":"LAI: Identidade, Criatividade e Resolução de Problemas",
"IsMultiOrganization":false,
"Enrolled":false,
"ClassID":586927,
"ClassName":"CCP1AN-CMA1-740671",
"GradeID":3432,
"GradeName":"Graduação (Prática)",
"OrganizationCourseID":36597,
"OrganizationCourseName":"Ciência da Computação",
"OriginOrganizationCourseID":0,
"ModuleStepID":246695,
"ModuleStepName":"UNIBH_2019/1",
"ModuleStepStartDate":"2019-01-01T00:00:00",
"ModuleStepEndDate":"2019-07-31T00:00:00",
"HasFrequency":false,
"HasEvaluationPeriod":false,
"HasEnade":false,
"StudentActive":true,
"EnadeChallengeTypeId":0,
"HasDiscussionForum":false,
"NewLessonCategoryCount":3,
"Year":0,
"DisciplineContentCoverImageUrl":"",
"LessonCount":2
}
],
"Success":true,
"ErrorMessage":null,
"ErrorType":0
}
跟这个班
public class Result {
private String DisciplineName;
public String getDisciplineName() {
return DisciplineName;
}
public void setDisciplineName(String disciplineName) {
DisciplineName = disciplineName;
}
public Result() {
}
public Result(String DisciplineName) {
this.DisciplineName = DisciplineName;
}
@Override
public String toString() {
return "Result{" +
"disciplineName='" + DisciplineName + '\'' +
'}';
}
}
这是主要的:
public class Main {
public static void main(String[] args) {
Ulife u = new Ulife();
try {
ObjectMapper mapper = new ObjectMapper();
// TypeFactory typeFactory = mapper.getTypeFactory();
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
JsonNode node = mapper.readTree(u.getDisciplinas());
//node = node.get("Result");
//System.out.println(node.get("Result").get(0).get("DisciplineName"));
List<Result> myObjects = Arrays.asList(mapper.readValue(node.toString(), Result[].class));
//List<Result> myObjects = Arrays.asList(mapper.readValue(node.get("Result").traverse(), Result[].class));;
//List<Result> someClassList = mapper.readValue(node.traverse(), typeFactory.constructCollectionType(List.class, Result.class));
//List<Result> list = mapper.treeToValue(node, typeRef);
System.out.println(myObjects);
// System.out.println(node.get("DisciplineName").asText());
}
catch (Exception e){
System.out.println(e.getMessage());
}
}
}
公共类主{
公共静态void main(字符串[]args){
Ulife u=新Ulife();
试一试{
ObjectMapper mapper=新的ObjectMapper();
//TypeFactory=mapper.getTypeFactory();
configure(在未知属性上反序列化feature.FAIL,false);
JsonNode=mapper.readTree(u.GetDistrictas());
//node=node.get(“结果”);
//System.out.println(node.get(“结果”).get(0.get(“规则名称”));
List myObjects=Arrays.asList(mapper.readValue(node.toString(),Result[].class));
//List myObjects=Arrays.asList(mapper.readValue(node.get(“Result”).traverse(),Result[].class));;
//List someClassList=mapper.readValue(node.traverse(),typeFactory.constructionCollectionType(List.class,Result.class));
//List List=mapper.treeToValue(节点,typeRef);
System.out.println(myObject);
//System.out.println(node.get(“规程名称”).asText());
}
捕获(例外e){
System.out.println(e.getMessage());
}
}
}
但是,当我打印出对象时,它们会给我所有的空值。。。我错过什么了吗?我不需要结果数组之外的值,但我从StructureName开始简单地了解jacksons是如何工作的,我的计划是在它工作时添加一些其他节点
我尝试了一些我在互联网上看到的其他例子,包括在stackoverflow这里的例子,但我无法让它们中的任何一个起作用
提前感谢。考虑使用Jackson注释。 另外,学习并遵守JavaBean命名约定 下面是一些示例代码:
@JsonIgnoreProperties(ignoreUnknown = true)
public class Result {
@JsonProperty
private String disciplineName;
public String getDisciplineName() {
return disciplineName;
}
public void setDisciplineName(String newValue) {
disciplineName = newValue;
}
public Result() {
}
public Result(String disciplineNameValue) {
disciplineName = disciplineNameValue;
}
@Override
public String toString() {
return "Result{" +
"disciplineName='" + disciplineName + '\'' +
'}';
}
}
用某种方法编写代码:
Result result;
ObjectMapper mapper = new ObjectMapper();
result = objectMapper.readValue(u.getDisciplinas(), Result.class);
这假设
u.getDistrictas()
返回一个字符串不链接到代码。将代码粘贴到问题中并正确设置格式。JSON的代码是长度,这就是为什么我认为这种方式更容易理解。。。SorryEdit可发布原始代码。您可能需要@JsonProperty(“字段名称”)
,或。您还应该使用标准的Java变量命名模式,不要更改变量以匹配Json值。@谢谢您的故事讲述者。我稍微修改了代码,还添加了您建议我的注释。它现在起作用了。谢谢