0

複雑なクラスのインスタンスのリストがあります。多くのvalを持つネストされたクラスを含む多くのvalがあります。jsonまたは のいずれかの形式でファイルに書き込みたいxml

私がやりたいことをしているように見える簡単な例を見つけました(ただし、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 形式で保存する必要があるため、シリアル化が必要かどうかはまだわかりません。

4

2 に答える 2

2

ジャクソンを使用した例:

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

sJSON が文字列として含まれます。

その後、その値を読み戻して、POJO に変換することもできます。のJavadocObjectMapper

@veritas がコメントで言及しているように、Jackson を拡張したり、{de,} シリアル化などをカスタマイズしたりできます。コーヒーを淹れることもできます。しかし、デフォルトはすでにかなり優れているため、その深さを掘り下げる必要さえないかもしれません.

于 2013-07-10T07:29:38.287 に答える