25

Gson を使用してオブジェクトをシリアル化する際に問題が発生しています。

@XmlRootElement
class Foo implements Serializable {
    private int number;
    private String str;

    public Foo() {
        number = 10;
        str = "hello";
    }
}

Gson はこれを JSON にシリアル化します

{"number":10,"str":"hello"}.

しかし、私はそうであってほしい

{"Foo":{"number":10,"str":"hello"}}

基本的にトップレベルの要素を含めます。Gsonでこれを行う方法をグーグルで検索しようとしましたが、うまくいきませんでした。これを達成する方法があるかどうかは誰にも分かりますか?

ありがとう!

4

4 に答える 4

23

オブジェクト ツリーの一番上に要素を追加する必要があります。このようなもの:

Gson gson = new Gson();
JsonElement je = gson.toJsonTree(new Foo());
JsonObject jo = new JsonObject();
jo.add("Foo", je);
System.out.println(jo.toString());
// Prints {"Foo":{"number":10,"str":"hello"}}
于 2011-01-07T07:31:15.063 に答える
15

タイプをハードコーディングする代わりに、次のことができます。

...
jo.add(Foo.getClass().getSimpleName(), je);
于 2011-01-08T17:32:05.980 に答える
-3

Jackson api を使用している場合は、以下の行を使用します。

mapper.configure(SerializationFeature.WRAP_ROOT_VALUE, true); mapper.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true);

于 2015-09-01T03:25:06.340 に答える