我有一个包含 OClass 对象的列表。我想创建这个 Objects 的 JSON 。这是我的代码:
public void getClasss() {
// returns all the top classes present in the ontology.
classlist = new ArrayList<OClass>();
Set<OClass> topclasses = ontology.getOClasses(true);
for (OClass oClasses : topclasses) {
classlist.add(oClasses);
}
OntoCreationClass ocreat = new OntoCreationClass();
ocreat.OntoCreation(classlist);
}
public class OntoCreationClass {
public static String data;
public void OntoCreation(List<OClass> list) {
System.out.println(list.get(0));
OutputStream out = new ByteArrayOutputStream();
ObjectMapper mapper = new ObjectMapper();
try {
mapper.writeValue(out, list);
} catch (JsonGenerationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (JsonMappingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
异常(exception)是:
com.fasterxml.jackson.databind.JsonMappingException: No serializer found for class com.ontotext.trree.owlim_ext.r and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationConfig.SerializationFeature.FAIL_ON_EMPTY_BEANS) ) (through reference chain: java.util.ArrayList[0]->gate.creole.ontology.impl.OClassImpl["ontology"]-gate.creole.ontology.impl.sesame.OWLIMOntology["service"]-gate.creole.ontology.impl.sesame.OntologyServiceImplSesame["sesameManager"]-gate.creole.ontology.impl.sesame.SesameManager["repositoryConnection"]-org.openrdf.repository.sail.SailRepositoryConnection["repository"]-org
.openrdf.repository.sail.SailRepository["sail"]-com.ontotext.trree.owlim_ext.SailImpl["pool"])
>
如何解决这个错误?有人可以帮忙吗?
最佳答案
如果类中字段的访问修饰符是私有(private)
,那么您必须放置Setter 和Getter 以使该类可序列化。
查看此示例代码来存储 Person
类的对象列表:
1- Person
类别:
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
2- 将 Person
对象添加到 List
中:
List<Person> persons = new ArrayList<Person>();
persons.add(new Person("Mike", 26));
persons.add(new Person("David", 20));
persons.add(new Person("Sara", 21));
persons.add(new Person("Amanda", 15));
3-那么您现在就可以使用writeValue
:
ObjectMapper objectMapper = new ObjectMapper();
try {
objectMapper.writeValue(new FileOutputStream(jsonPath), persons);
} catch (IOException e) {
e.printStackTrace();
}
4-最后你可以看到 JSON
文件:
[{"name":"Mike","age":26},{"name":"David","age":20},{"name":"Sara","age":21},{"name":"Amanda","age":15}]
关于java - JSON解析抛出异常:,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36978849/