繁体   English   中英

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

[英]GSON - How to only return a list of a certain subobject?

我正在使用API​​获取应用程序的数据。 我使用GSON解析JSON数据,因此出现了类似以下情况:

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

double值用于加权电影的顺序。 但是,我对此并不感兴趣,而是看起来像是电影的简单清单:

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

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

我似乎记得,给您的字段一个transiental关键字应该可以解决问题:

private transient double value;

这应该将其排除在序列化之外。

您可以将JsonPath库与JSONExpression一起使用,以从JSON提取所需的元素。 例如在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);
}

是一个不错的网站,可以即时测试JSON表达式。

* 编辑 * Maven对JsonPath的依赖:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM