2012-07-19 204 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}]}