gpt4 book ai didi

json - 如何使用 Katharsis.io 在 Spring Controllers Json 响应中连字符复合属性名称

转载 作者:行者123 更新时间:2023-12-02 15:22:39 24 4
gpt4 key购买 nike

Json:API 要求建议使用连字符连接复合属性名称(如名字)

...
{
"type": "people",
"id": "9",
"attributes": {
"first-name": "Foo",
"last-name": "Bar",
}
...

在 Java 中,带连字符的属性名称不是有效的标识符。

我正在使用 Katharsis 2.0.1 在 spring-boot 1.3.0 中构建一个基于 JSON:API 的服务后端。我的调用/消费前端应用是使用 Ember 2.0 和 ember-data 构建的。

不幸的是,Katharsis 似乎没有将 Java 中的复合属性名称转换为 Json 中的带连字符的属性名称。

这是 Katharsis 为 GET /api/customers 资源生成的结果

{
"data": [
{
"type": "customers",
"id": "1",
"attributes": {
"cpn": "-1234567",
"firstName": "John",
},
...

但应该是"first-name": "John"

我是否缺少某些配置或如何告诉 Katharsis 使用连字符属性?

谢谢!

最佳答案

按照@Ethans 的建议,我坚持在 Katharsis.io 中使用驼峰命名法属性,并让 Ember 覆盖属性名称。

在 Ember 中,JSONAPISerializer 支持所有情况,因为它提供了易于覆盖的 Hook 。 keyForAttribute 的文档和 keyForRelationship显示如何自定义键的示例。

在我的例子中,我必须实现以下序列化程序类:

// app/application/serializer.js or app/serializers/application.js 

import Ember from 'ember';
import DS from 'ember-data';

export default DS.JSONAPISerializer.extend({
keyForAttribute: function(attr, method) {
return Ember.String.camelize(attr);
},

keyForRelationship: function(key, relationship, method) {
return Ember.String.camelize(key);
}
});

关于json - 如何使用 Katharsis.io 在 Spring Controllers Json 响应中连字符复合属性名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33940628/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com