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

时间:2015-01-15 15:30:57

标签: json ember.js servicestack

我正在尝试使用带有ServiceStack v3后端的Ember.js前端。我遇到的问题是Ember Data正在按照jsonapi.org标准期待JSON:

[{"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"}]

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

非常感谢任何协助或指示。

谢谢!

2 个答案:

答案 0 :(得分:3)

您可以告诉ServiceStack的JSON Serializer使用以下内容发出camelCase个属性名称:

JsConfig.EmitCamelCaseNames = true;

您还需要使用与要返回的JSON形状相匹配的类型,例如:

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

答案 1 :(得分:0)

您可以实现一个序列化程序,如下所示:

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