我有一个包含OClass对象的列表。我想创建这个对象的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();
}
}
}
例外是:
com.fasterxml.jackson.databind.JsonMappingException:没有序列化程序 找到类com.ontotext.trree.owlim_ext.r并没有属性 发现创建BeanSerializer(以避免异常,禁用 SerializationConfig.SerializationFeature.FAIL_ON_EMPTY_BEANS)) (通过参考链: 的java.util.ArrayList [0] - &GT; gate.creole.ontology.impl.OClassImpl [ “本体”] - gate.creole.ontology.impl.sesame.OWLIMOntology [ “服务”] - gate.creole.ontology.impl .sesame.OntologyServiceImplSesame [ “sesameManager”] - gate.creole.ontology.impl.sesame.SesameManager [ “repositoryConnection”] - org.openrdf.repository.sail.SailRepositoryConnection [ “储存库”] - 有机
.openrdf.repository.sail.SailRepository["sail"]-com.ontotext.trree.owlim_ext.SailImpl["pool"])
&GT;
我该如何解决这个错误?有人可以帮忙吗?
答案 0 :(得分:1)
如果班级中的字段的访问修饰符为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}]