GSON,禁用特定字段/变量的deserializaton并将json保存为字符串

时间:2015-10-04 12:42:10

标签: java json gson json-deserialization

如何在反序列化后从变量tags获取JSON作为字符串?

以json文件为例:

{
"first_name": "John",
"last_name" : "Well",
"tags": {"1001": "author", "1002": "signer"}
}

类人物:

Class Person{
  String first_name;
  String last_name;

  String tags; // here should be json as string
}

调用funciton deseralization json的方法。

GsonBuilder builder = new GsonBuilder();
Gson gson = builder.create();
gson.fromJson(txt, Person.class);

错误:

10-04 07:33:28.035 26156-26481/pl.xxxE/AndroidRuntime: com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected a string but was BEGIN_OBJECT at line 4 column 9

**更新1 **

来自@ dtx12的答案:

Class Person{
  String first_name;
  String last_name;
  JSONObject tags; // but result {}
}

由于空洞的结果,这个答案也没有用。但是这样应该在反序列化的进程中停止...我正在谈论使用移动应用程序的性能,并且反序列化1000多个对象。

2 个答案:

答案 0 :(得分:1)

使用JsonObject代替String,然后在此字段上调用方法toString()(例如,您可以为此目的设置getter)

答案 1 :(得分:0)

喜欢 dtx12 表示您可以执行以下操作:

JsonObject jsonObject = gson.fromJson( jsonString, JsonObject.class);
String tags = jsonObject.get("tags").toString();