2012-07-19 122 views
0

我收到我的HTTP Web服务反序列化多种类型与GSON

{"status":100,"data":[{"name":"kitchen chair","price":25.99,"description":null}]} 

现在我希望能够反序列化这种下面的JSON响应。我偶然发现了谷歌的Gson,它起初在一些小型测试用例上运行良好,但是我在上面的字符串反序列化时遇到了一些麻烦。

我知道data字段中只有一个项目,但它可以保存多个,这就是为什么所有响应都将data字段作为数组。

我读Gson User Guide和理想,我想有一个Response对象,它有两个属性:statusdata,但data场必须是这大概是使它很难GSON MapList对象。

然后,我看着this这是一个更接近我的问题的例子,但我仍然无法弄清楚。在这个例子中,整个响应是一个数组,而我的JSON字符串有一个字符串元素,然后是一个数组。

我最好怎么去反序列化呢?

回答

2

目前尚不清楚究竟是什么样的尝试似乎是“Gson难”。

Gson的最新版本处理简单。以下是一个例子。

input.json

{ 
    "status":100, 
    "data": 
    [ 
     { 
      "name":"kitchen chair", 
      "price":25.99, 
      "description":null 
     } 
    ] 
} 

Response.java

import java.util.List; 
import java.util.Map; 

class Response 
{ 
    int status; 
    List<Map> data; 
} 

GsonFoo.java

import java.io.FileReader; 

import com.google.gson.Gson; 

public class GsonFoo 
{ 
    public static void main(String[] args) throws Exception 
    { 
    Response response = new Gson().fromJson(new FileReader("input.json"), Response.class); 
    System.out.println(new Gson().toJson(response)); 
    } 
} 

输出:

{"status":100,"data":[{"name":"kitchen chair","price":25.99}]}