我从http网络服务
收到以下JSON响应{"status":100,"data":[{"name":"kitchen chair","price":25.99,"description":null}]}
现在我希望能够反序列化这个。我偶然发现了谷歌的Gson,它最初适用于一些小型测试用例,但我在上述字符串反序列化方面遇到了一些麻烦。
我知道data
字段中只有一个项目,但它可能包含多个项目,这就是为什么所有响应都将data
字段作为数组。
我正在阅读Gson User Guide,理想情况下,我希望有一个Response
对象,它有两个属性:status
和data
,但是data
字段必须是List
个Map
个对象,这可能会让Gson难以理解。
然后我看了this这是一个更接近我的问题的例子,但我仍然无法弄明白。在示例中,整个响应是一个数组,而我的JSON字符串有一个字符串元素,然后是一个数组。
我最好如何对此进行反序列化?
答案 0 :(得分: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}]}