基本上说,你需要创建一个自定义的gson TypeAdapter
类,并自己写入从Object到String的转换登录名。
然后注释该字段,指出要使用gson读取/写入它的TypeAdapter。
在这篇博客文章的更多细节:Gson TypeAdapter Example
例子:Prasing类对象作为原始JSON字符串
public class StringTypeAdapter extends TypeAdapter<String> {
@Override
public void write(JsonWriter out, String value) throws IOException {
try {
JSONObject jsonObject = new JSONObject(value);
out.beginObject();
Iterator<String> iterator = jsonObject.keys();
while (iterator.hasNext()) {
String key = iterator.next();
String keyValue = jsonObject.getString(key);
out.name(key).value(keyValue);
}
out.endObject();
} catch (JSONException e) {
e.printStackTrace();
}
}
@Override
public String read(JsonReader in) throws IOException {
in.beginObject();
JSONObject jsonObject = new JSONObject();
while (in.hasNext()) {
final String name = in.nextName();
final String value = in.nextString();
try {
jsonObject.put(name, value);
} catch (JSONException e) {
e.printStackTrace();
}
}
in.endObject();
return jsonObject.toString();
}
}
使用TypeAdapter:
@JsonAdapter(StringTypeAdapter.class)
private String someClass; // Lazy parsing this json
我不明白。 Java'String'将被序列化为JSON字符串。你能用一个例子来澄清吗? –
所以说我有一个Java类的调用Animal.java有很多字段之一是调用Perro哪一个对象,所以如果我有一个字符串响应,它实际上是一个JSON,那么如果我做的动物动物= gson.fromJson(response,Animal.class),然后我希望Perro字段保留为json原始字符串,而不是将其解析为Perro对象。 –
请使用示例JSON有效内容编辑您的问题。如果你的字段是'Object'类型的,并且它实际上是JSON中的JSON字符串,我相信Gson将无法解析。如果它是'Object',Gson需要一个JSON对象。 –