Gson:解析字符串[]

时间:2013-10-25 17:57:04

标签: json parsing gson

我正在使用Gson库来解析JSON对象。特别是,我有一个像这样的JSON:

{
 "key": ["string1", "string2"]
}

我想在一个简单的String []中解析它,而不构建一个特定的对象。我试过这种方式:

gson.fromJson(json, String[].class);

但是我有一个错误:“预计BEGIN_OBJECT但是BEGIN_ARRAY”,我猜是因为密钥的存在。任何想法我该如何解决?

2 个答案:

答案 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如何理解它会更好。