0

私はGson APIを使用しており、次のようなクラスを作成しました:

public class Person
{
   private String name;
   private JsonObject someInfo;

   public Person()
   {
   }
}

以下を使用して、このクラスのインスタンスをシリアル化すると:

Person person = new Person();
person.name = "Charles"
person.someInfo = new JsonObject();
person.someInfo.addProperty("key1","value1");
Gson gson = new Gson();
String jsonStr = gson.toJson(person);

メンバー プロパティ内の情報を取得します。

{"members":{"name":"Charles","someInfo":{"key1":"value1"}}}

Person のクラス someInfo グローバル変数を JsonObject ではなく JsonElement として宣言すると、情報が正しく表示されることに気付きました。

JsonObject を使用して情報をシリアル化する方法はありますか?

私が期待するものは次のとおりです。

{"name":"Charles","someInfo":{"key1":"value1"}}
4

2 に答える 2

2

私は Gson 2.2.2 を使用して同じ問題を抱えていました。

Gson 2.2.3 にアップグレードしたとき、JsonObject をシリアライズすると、期待どおりの JSON が得られました。

于 2013-04-26T04:43:41.960 に答える
0

someInfo に Map を使用します。

public class Person
{
   private String name;
   private Map<Object, Object> someInfo;

   public Person()
   {
   }

}

Person person = new Person();
person.name = "Charles";
person.someInfo = new HashMap<Object, Object>();
person.someInfo.put("key1","value1");

Person変数にアクセスするには、適切なゲッター/セッターを使用する方がよいでしょう。

于 2012-05-08T13:56:06.240 に答える