我正在使用 Gson 库来解析 JSON 对象。特别是,我有一个这样的 JSON:
{
"key": ["string1", "string2"]
}
我想用一个简单的 String[] 解析它,而不构建一个特定的对象。我试过这样:
gson.fromJson(json, String[].class);
但我有一个错误:“预期 BEGIN_OBJECT 但是 BEGIN_ARRAY”,我猜是因为存在密钥。任何想法我应该如何解决它?
创建一个类,该类的key
属性类型为 ofString[]
并反序列化。
public class Thing
{
private String[] key;
public String[] getKey() {
return key;
}
}
Thing thing = gson.fromJson(json, Thing.class);
由于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 的原因会更好。