GSON - 如何仅返回某个子对象的列表?

时间:2016-03-09 17:27:04

标签: java json gson

我正在使用api来获取我的应用程序的数据。我使用GSON解析JSON数据,所以我有这样的东西:

List
    obj
        double
        movie
            ...
    obj
        double
        movie
            ...
    ...

double值用于加权电影的顺序。但是,我对此并不感兴趣,而是会看一个简单的电影列表,如下所示:

List
    movie
        ...
    movie
        ...
    ...

我能想到的唯一解决方案是首先将其解析为obj列表然后使用循环将电影对象复制到新列表,但我希望你能教我一个更好的方法。你有什么建议吗?

2 个答案:

答案 0 :(得分:0)

我似乎记得给你的字段提供transient关键字应该可以解决问题:

private transient double value;

这应该将其从序列化中排除。

答案 1 :(得分:0)

您可以使用JsonPath库以及JSONExpressionJSON中提取所需的元素。例如。如果是json:

[{
    "test": 1,
    "test1": "value1"
},
{
    "test": 1,
    "test1": "value2"
}]

如果您想获得test1元素的所有值,则可以使用$[*].test1 JSONExpression同时获取value1value2。请参阅下面的Java示例:

public static void main(String[] args) {
    Object value = JsonPath.read("[{    \"test\": 1,    \"test1\": \"value1\"},{    \"test\": 1,    \"test1\": \"value2\"}]", "$[*].test1");
    System.out.println(value);
}

This是一个很好的网站,可以动态测试JSON个表达式。

*的修改 * JsonPath的Maven依赖:

<dependency>
    <groupId>com.jayway.jsonpath</groupId>
    <artifactId>json-path</artifactId>
    <version>2.0.0</version>
</dependency>