GSON,禁用特定 field/variable 的反序列化并将 json 保存为字符串
GSON, disable deserializaton from specific field/variable and save json as string
如何在反序列化后从变量 tags
中获取 JSON 作为字符串?
json 文件为例:
{
"first_name": "John",
"last_name" : "Well",
"tags": {"1001": "author", "1002": "signer"}
}
class 人:
Class Person{
String first_name;
String last_name;
String tags; // here should be json as string
}
调用反序列化函数的方法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 多个对象的性能。
使用 JsonObject
而不是 String
,然后在此字段上调用方法 toString()
(例如,您可以为此目的制作 getter)
喜欢dtx12说你可以做以下事情:
JsonObject jsonObject = gson.fromJson( jsonString, JsonObject.class);
String tags = jsonObject.get("tags").toString();
如何在反序列化后从变量 tags
中获取 JSON 作为字符串?
json 文件为例:
{
"first_name": "John",
"last_name" : "Well",
"tags": {"1001": "author", "1002": "signer"}
}
class 人:
Class Person{
String first_name;
String last_name;
String tags; // here should be json as string
}
调用反序列化函数的方法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 多个对象的性能。
使用 JsonObject
而不是 String
,然后在此字段上调用方法 toString()
(例如,您可以为此目的制作 getter)
喜欢dtx12说你可以做以下事情:
JsonObject jsonObject = gson.fromJson( jsonString, JsonObject.class);
String tags = jsonObject.get("tags").toString();