0

嗯...我打算只问一个问题。但我决定用一块石头杀死两只鸟

第一个问题:Sitebricks 使用什么作为 Java POJO 和 JSON 之间的默认序列化器/反序列化器?例如,假设这是我的 POJO:

public class MyObject {
    private String key;
    private int value;
    public MyObject (String k, int v) {
        this.key = k;
        this.value = v;
    }
}

这是我的 Sitebricks servlet 中的一个方法示例:

@Get
public Reply<?> listPools() {
    return Reply.with(new MyObject("Foo", 6)).as(Json.class);
}

我没有MyObject使用任何Jackson注释进行注释,也没有在代码中的任何地方使用GSON。然而,令我惊讶的是,我在回复中将其作为我的内容主体返回:

{"value":6,"key":"Foo"}

所以我想知道的是,Sitebricks 默认使用什么技术或框架来序列化-反序列化 JSON。杰克逊?格森?巫术和巫术?

现在是第二个问题。我在标题中注意到响应Content-Typetext/json. 这对我来说看起来很奇怪,因为在我过去的经验中,我一直将application/jsonJSON 作为 Content-Type 来处理。这篇Stackoverflow 帖子证实了我的信念。对此有何评论?

提前致谢!

4

2 回答 2

1

Sitebricks 默认使用 Jackson,它将使用合理的默认值在没有任何配置的情况下转换对象。如果要覆盖该行为,请使用标准 Jackson 规定的配置绑定 ObjectMapper。

在大多数情况下,您可能应该设置 application/json ,正确的。SB应该设置这个,你是对的,我会在trunk中进行更改。

于 2012-11-12T03:11:40.893 回答
1

仍然可以通过以下方式随时更改它

 return Reply.with(...).as(Json.class).type("application/json; charset=utf-8");
于 2012-11-21T15:58:19.037 回答