0

すべての JSON 操作に net.sf.json API を使用しています。JSONSerializer.toJSON(POJO, JsonConfig) を使用して POJO を JSON に変換しようとしています。結果の JSON に、POJO で指定された順序と同じ順序で POJO 属性を持たせたいと考えています。しかし、私が見ているのは、シリアル化の結果が POJO プロパティのアルファベット順になっていることです。

public class Person {

    private String name;
    private int age;

    // getters and setters`enter code here`
}

Person p = new Person();
p.setName("John");
p.setAge(50);

JSONSerializer.toJSON(p) // {"age":50,"name":"John"}

私は実際に {"name":"John","age":50} が欲しい

私はこのハックを試しました、

public class Person {

    private String _1_name;
    private int _2_age;

    // getters and setters
}

JsonConfig config = new JsonConfig();

config.registerJsonPropertyNameProcessor(Person.class, new PropertyNameProcessor() {

        @Override
        public String processPropertyName(Class arg0, String arg1) {
            if (arg1.equals("_2_age"))
                return "age";
            if (arg1.equals("_1_name"))
                return "name";          
            return arg1;
        }
    });

JSONSerializer.toJSON(p, config); // {"name":"John","age":50}`

もっと良い方法はありますか?

プロジェクト全体で net.sf.json が使用されているため、より優れた機能を持つ Jackson に移動したくありません。

4

1 に答える 1