我正在使用Gson库来解析JSON对象。特别是,我有一个像这样的JSON:
{
"key": ["string1", "string2"]
}
我想在一个简单的String []中解析它,而不构建一个特定的对象。我试过这种方式:
gson.fromJson(json, String[].class);
但是我有一个错误:“预计BEGIN_OBJECT但是BEGIN_ARRAY”,我猜是因为密钥的存在。任何想法我该如何解决?
答案 0 :(得分:1)
创建一个具有key
属性且类型为String[]
并反序列化的类。
public class Thing
{
private String[] key;
public String[] getKey() {
return key;
}
}
Thing thing = gson.fromJson(json, Thing.class);
答案 1 :(得分:1)
由于 tvanfosson 答案是完美的,我不应该添加任何内容,但在您提出的评论中,可以避免创建Thing
类。是的,但我认为它更脆弱。我将向您展示如何处理此代码:
String json = "{\"key\": [\"string1\", \"string2\"]}";
String mJson = json.replace("{\"key\":", "").replace("}","");
String[] strings = new Gson().fromJson(mJson, String[].class);
System.out.println(Arrays.asList(strings));
当然这段代码运行没有错误,并且避免了你额外的类,但想想如果里面有一些回车会发生什么。 它会中断,除非您在替换调用中使用正则表达式。在这一点上,我更喜欢添加一个类,而不是考虑正确的正则表达式,让Gson完成整个工作。
我添加了这个作为回复,而不是作为评论有足够的空间来解释自己,但这个答案不应该被视为正确的反应,而是作为糟糕的黑客使用。理解Gson如何理解它会更好。