0

我从我的 http Web 服务收到以下 JSON 响应

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

现在我希望能够反序列化它。我偶然发现了来自 Google 的 Gson,它起初对一些小型测试用例效果很好,但我在反序列化上述字符串时遇到了一些麻烦。

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

我正在阅读Gson 用户指南,理想情况下,我希望有一个Response具有两个属性的对象:statusdata,但该data字段必须是一个List对象Map,这可能会让 Gson 很难。

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

我将如何最好地进行反序列化?

4

1 回答 1

2

目前尚不清楚究竟已经尝试过什么似乎“对 Gson 来说很难”。

Gson 的最新版本简单地处理了这个问题。下面是一个例子。

输入.json

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

响应.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}]}
于 2012-07-19T23:07:55.270 回答