2

我有一个返回对象列表的 JAVA REST 服务。每个对象都包含名称、描述、代码。我想缩小响应json

{
    "objects": {
        "count": 10000,
        "list": [
            {
                "name": "1",
                "description": "foo",
                "code": "foo",
            },
            {
                "name": "2",
                "description": "bar",
                "code": "bar",
            },
            ...... (1.000 items)
        ]
    }
}

至:

{
    "a": {
        "b": 1000,
        "c": "a:objects,b:count,c:mapping,d:list,e:name,f:description,g:code",
        "d": [
            {
                "e": "1",
                "f": "foo",
                "g": "foo",
            },
            {
                "e": "2",
                "f": "bar",
                "g": "bar",
            },
            ...... (1.000 items)
        ]
    }
}

我该怎么做,谢谢。

4

1 回答 1

1

即使我们不知道您使用的是什么特定技术。我将假设您正在使用某种 REST 库,例如 Spring 或 JaxRS,并且您正在将 POJO 序列化为 JSON。我还将假设您已完成所有设置并为该配置工作,我将专注于使用该设置的输出。

如果你在 POJO 中使用了类似 Jackson 的东西,你可以在你的类中添加下面的注解:

public class MyResponseObject {
    @JsonProperty("a")
    private MyObject objects;

    public MyObject getObjects() { return objects; }
    public void setObjects(MyObject object) { this.objects = object; }
}

public class MyObject {
    @JsonProperty("b")
    private long count;
    @JsonProperty("d")
    private List<Item> list;

    // getters/setters
}

public class Item {
    @JsonProperty("e")
    private Sting name;
    @JsonProperty("f")
    private String description;
    @JsonProperty("g")
    private String code;

    // getters/setters
}

关于每个含义的映射,您可以对该映射进行硬编码/编码,但我认为没有一种自动的方法可以做到这一点。您还可以在您的方法的 JavaDoc 中包含该映射的内容。另一种选择是,如果这是一个对其他服务公开的 API,您不仅可以提供文档,还可以提供一个带有您的 API 输出的 POJO 的打包 Jar。这样,他们所要做的就是将您的 jar 文件作为依赖项包含在内,并将它们包含在映射的类中。

我希望这有助于指导您朝着正确的方向前进。

此外,如果您不使用 Jackson,但更喜欢 JAXB 使用@XmlElement(name="a")

于 2015-09-11T22:03:58.283 回答