JSON解析抛出异常:

时间:2016-05-02 09:10:58

标签: java json

我有一个包含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;

我该如何解决这个错误?有人可以帮忙吗?

1 个答案:

答案 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}]