如何使用GSON库在JSON.org库之间反序列化JSON字符串

时间:2011-05-22 18:46:35

标签: json gson

使用来自Google的json库的GSON库时遇到问题。希望有人可以给我一些提示。

问题是当我使用gson.fromJson()函数尝试将json字符串转换为指定的已定义类时。

示例代码:

String jsonStr = "{name:"ABC", countries:["US"]}";  // Some Json string.
Gson gson = new Gson();
Example example = gson.fromJSON(jsonStr, Example.class);

class Example {
  // does no have no-arg constructor
  private String name;
  private Integer age;
  private JSONArray keywords;  // import org.json.JSONArray;
  private JSONArray countries;

  // other codes
}

以上代码是我的问题的简化版本。 问题出在fromJson()函数中。错误消息是“JsonParseException:Expecting object found found [”US“]”。

我无法弄清问题是什么。我想也许gson不知道如何将字符串转换为JSONArray。因为在这里,JSONArray来自另一个库(org.json)。

我试着弄清楚gson文件。看起来我需要编写一些“Instance Creator”代码。

我想知道另一个人是否可以给我一些解决方案。谢谢。

1 个答案:

答案 0 :(得分:1)

只需将关键字和国家/地区设为java列表类型即可。我从未见过org.json和gson混在一起。通常gson会替换org.json,但这并不意味着要一起使用。

编辑:

小例子:

class Example {
   private String name;
   private Integer age;
   private List<String> keywords;
   private List<String> countries;

   public String toString() {
       return new Gson().toJson(this);
   }
}