我使用Realm作为数据库,但它无法直接保存String Array。因此,我必须在保存之前将其转换为自定义对象。这就是我编写自定义反序列化器的原因。但是,我发现解串器在调试期间没有捕获json。 (但我将String []。类更改为String.class,它捕获“Peter”)
现在我的服务器json是
{
"name":"Peter",
"role":[
"user",
"admin"
]
}
注册用于处理字符串数组的反序列化代码:
Gson gson =
new GsonBuilder()
.registerTypeHierarchyAdapter(String[].class, new ListStringResponseDeserializer())
答案 0 :(得分:1)
您可以尝试使用http://realmgenerator.eu - 在那里粘贴您的JSON,您将获得自定义对象来存储字符串(但您必须检查“使用类RealmInt和RealmString用于原始数组”复选框)。 然后使用GsonBuilder创建Gson对象,就像这里https://gist.github.com/jocollet/91d78da9f47922dc26d6
一样答案 1 :(得分:0)
您的回复不是字符串数组,它是包含字符串数组的对象。您可以像这样反序列化:
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
class Test {
class Root {
String name;
String[] role;
}
public static void main(String args[]) {
// JSON from question
String json = "{\n"+
"\n"+
" \"name\":\"Peter\",\n"+
" \"role\":[\n"+
"\n"+
" \"user\",\n"+
" \"admin\"\n"+
" ]\n"+
"}\n"+
"\n";
Gson gson = new GsonBuilder().create();
Root root = gson.fromJson(json, Root.class);
System.out.println(root.name);
for (String s: root.role) {
System.out.println(s);
}
}
}
输出
Peter
user
admin