私はいくつかのフィールドとjsonオブジェクトを格納するstring型の余分なデータを持つクラスを持っています。私は、それが直列化復元されないようにしたいが、1時間以上探した後、私が見つけた唯一のものだった:jsonの逆シリアル化でオブジェクトを文字列として保持
@Expose(deserialize=false)
しかし、それは動作しません。
次は一例です。
public class Employee implements Serializable
{
private static final long serialVersionUID = 1L;
@Expose
public Long id;
@Expose
public String name;
... some more fields
@SerializedName("extraData")
@Expose(deserialize = false)
public String extraData;
}
その後、私のサービスに、私は次のようにします。
final GsonBuilder builder = new GsonBuilder();
final Gson gson = builder.create();
Employee emp = gson.fromJson(json, Employee.class);
私はフロントエンドから受け付けており、オブジェクトがある:
{
"id":1,
"name": "John Doe",
"extraData": {"someField1":"someValue1","someField2":"someValue2"}
}
そして、私はこのエラーを受け取ります: java.lang.IllegalStateException:文字列を期待しましたが、行1列48パス$ .extraData
でBEGIN_OBJECT私はちょうどそれは私が与えられた仕様であるため、
{"someField1":"someValue1","someField2":"someValue2"}
他の解決策が受け入れられない値で文字列として「extraData」を取得したいです。
についてはどうですか? '' someField1 \ ":\" someValue1 \ "、\" someField2 \ ":\" someValue2 \ "}" ' –