【问题标题】:Writing an instance(s) of a class in a file in json or xml [duplicate]在json或xml文件中写入类的实例[重复]
【发布时间】:2013-07-10 07:23:32
【问题描述】:

我有一个复杂类的实例列表:它有很多 val,包括嵌套类,也有很多 val。我想以jsonxml 格式写入文件。

我找到了一个简单的例子,它似乎可以做我想做的事(虽然在 Java 中,但这并不重要):

#Main.java
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;

public class Main {

    public static void main(String args[]) {
        try {
            Employee employee = new Employee("0001", "Robert", "Newyork City", "IT");

            FileOutputStream fos = new FileOutputStream("my-data.txt");
            ObjectOutputStream oos = new ObjectOutputStream(fos);

            oos.writeObject(employee);

            oos.flush();
            oos.close();
            System.out.println("Employee Object written to file employee.dat");
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
}

#Employee.java
import java.io.Serializable;


public class Employee implements Serializable {
    private String empId;
    private String Name;
    private String Address;
    private String Dept;

    public Employee(String empId, String name, String address, String dept) {
        this.empId = empId;
        this.Name = name;
        this.Address = address;
        this.Dept = dept;
    }

    public String toString() {
        return "[Employee: " + empId + ", " + ", " + Name + ", " + Address + ", " + Dept + "]";
    }
}

我的输出是一个写入文件的二进制数据。而且toString()方法手动枚举所有字段,这对于我的真实课堂来说是无法接受的。

那我该怎么做呢?如果你给出一个小例子,我会非常感激,而不是说“有一个名为 X 的库,使用它”。在我之前关于序列化的问题中,我已经使用所有这些库失败了。我还不确定我需要的是序列化,因为我需要它不是以二进制形式存储,而是以 xml 或 json 格式存储。

【问题讨论】:

  • 添加一个示例,说明结果文本文件的外观
  • @om-nom-nom 据我了解,他不想序列化它,而是以人类可读的格式写入文件,而不是二进制
  • @AlexIv xml 和 json 相对人类可读,我上面链接的问题不是关于 binary 序列化,而是关于序列化为 json/xml

标签: java xml json scala


【解决方案1】:

使用 Jackson 的示例:

final ObjectMapper mapper = new ObjectMapper();
final String s = mapper.writeValueAsString(yourEmployee);

s 包含 JSON 作为字符串。

然后您可以读回该值并将其转换回 POJO。 Javadoc for ObjectMapper.

正如@veritas 在评论中提到的,您可以扩展 Jackson、自定义 {de,} 序列化等 - 哎呀,您甚至可以让它煮咖啡。但是默认值已经很不错了,所以你甚至不需要深入研究它。

【讨论】:

【解决方案2】:

我建议您使用一个知道如何将 POJO 对象序列化为 XML 或 JSon 的库。 看看JAXBXStreamJackson 也是一个选项。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-07
    • 2013-04-22
    • 1970-01-01
    • 2020-10-14
    相关资源
    最近更新 更多