gson和json反序列化

时间:2011-09-02 20:48:34

标签: java json gson

这是json编码我的php echos:

{"detail1":{"key1":"value1","key2":"value2","key3":"value3"},"detail2":["elementone","elementtwo","elementthree"],"detail3":["element1","element2","element3"]}

我在应用程序中使用的gson命令是:

Gson gson = new Gson();
ParseActivity.parsedata = gson.fromJson(result, new TypeToken < HashMap < String , Object>>(){}.getType());

但是gson给出了一个jsonparseexception并且无法解析,parsedata是一个相同类型的静态变量。

感谢您的帮助

1 个答案:

答案 0 :(得分:3)

您需要在返回的类型中更明确。字段detail1Map<String, String>,其他字段是List<String>。您需要创建一个完全包含这些字段的包装类(Javabean):

public class Details {
    private Map<String, String> detail1;
    private List<String> detail2;
    private List<String> detail3;

    // Add/generate getters/setters.
}

以便您可以按如下方式使用它:

Details details = new Gson().fromJson(result, Details.class);

或者,您可以让Gson将其转换为JsonElement树,以便您可以手动遍历它:

JsonElement details = new Gson().toJsonTree(result);