GSON反序列化名称/值对的数组

时间:2012-04-05 17:45:00

标签: java gson

我的字符串是:

"[{"property":"surname","direction":"ASC"}]"

我可以让GSON对其进行反序列化,而无需添加/包装它吗? 基本上,我需要反序列化一组名称 - 值对。 我尝试了一些方法,但没有用。

1 个答案:

答案 0 :(得分:14)

您基本上想要将其表示为地图列表:

public static void main( String[] args )
{
    String json = "[{\"property\":\"surname\",\"direction\":\"ASC\"}]";

    Type listType = new TypeToken<ArrayList<HashMap<String,String>>>(){}.getType();

    Gson gson = new Gson();

    ArrayList<Map<String,String>> myList = gson.fromJson(json, listType);

    for (Map<String,String> m : myList)
    {
        System.out.println(m.get("property"));
    }
}

输出:

  

如果数组中的对象包含一组已知的键/值对,则可以创建POJO并映射到该对象:

public class App 
{
    public static void main( String[] args )
    {
        String json = "[{\"property\":\"surname\",\"direction\":\"ASC\"}]";
        Type listType = new TypeToken<ArrayList<Pair>>(){}.getType();
        Gson gson = new Gson();
        ArrayList<Pair> myList = gson.fromJson(json, listType);

        for (Pair p : myList)
        {
            System.out.println(p.getProperty());
        }   
    }
}

class Pair
{
    private String property;
    private String direction;

    public String getProperty() 
    {
        return property;
    }    
}