如何使 ServiceStack v3 符合 jsonapi.org 标准?

How can I make ServiceStack v3 conform to jsonapi.org standards?

我正在尝试将 Ember.js 前端与 ServiceStack v3 后端结合使用。我 运行 遇到的问题是 Ember 数据预期 JSON 按照 jsonapi.org 标准,如下所示:

[{"clients":
    [
       {"clientID":80,"name":"Test Client 6","acronym":"TCL6","website":"http://www.tcl6.com"},  
       {"clientID":81,"name":"Test Client 7","acronym":"TCL7","website":"http://www.tcl7.com"}
    ]
}] 

但是ServiceStack将数据序​​列化为如下:

[{"ClientID":80,"Name":"Test Client 6","Acronym":"TCL6","Website":"http://www.tcl6.com"},
 {"ClientID":81,"Name":"Test Client 7","Acronym":"TCL7","Website":"http://www.tcl7.com"}]

迫使我在前端实现自定义逻辑,以 "massage" 将数据转换为适当的格式。我想避免在客户端执行此转换并将其直接实现到后端的响应中。

如有任何帮助或指导,我们将不胜感激。

谢谢!

你可以实现一个序列化器,像这样:

App.ClientSerializer = DS.RESTSerializer.extend({
    normalizePayload: function(payload) {
      return {
        "client": payload
      };
    }
});

您可以告诉 ServiceStack 的 JSON 序列化程序发出 camelCase 属性 名称:

JsConfig.EmitCamelCaseNames = true;

您还需要使用与您想要 return 的 JSON 形状匹配的类型,例如:

public class JsonApiClients
{
    public List<Client> Clients { get; set; }
}