1

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

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

我想用一个简单的 String[] 解析它,而不构建一个特定的对象。我试过这样:

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

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

4

2 回答 2

1

创建一个类,该类的key属性类型为 ofString[]并反序列化。

public class Thing
{
    private String[] key;

    public String[] getKey() {
        return key;
    }
}

Thing thing = gson.fromJson(json, Thing.class);
于 2013-10-25T17:59:52.580 回答
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 的原因会更好。

于 2013-10-25T21:00:25.547 回答