首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Drupal 8 jsonapi:如何更改返回的包含数组的json关系的结构?

Drupal 8 jsonapi:如何更改返回的包含数组的json关系的结构?
EN

Stack Overflow用户
提问于 2021-01-21 22:00:33
回答 1查看 868关注 0票数 0

我正在向jsonapi节点端点发送请求,并使用以下参数将这些节点的“关系”对象包含为用户(post author data)和用户图片(avatar):

include=uid,uid.user_picture

这将返回节点的json数据以及聚集在一起(不管类型如何)到“包含”数组中的所有关系对象。默认情况下,所包含的数组看起来如下:

代码语言:javascript
复制
"included": [
        {
            "type": "user--user",
            "id": "4c717273-f903-4ffa-abe2-b5e5709ad727",
            "attributes": {
                "display_name": "cherylm1234",
               ...etc...
            }
        },
        {
            "type": "file--file",
            "id": "4c717273-f903-4ffa-abe2-b5e5709ad727",
            "attributes": {
                "filename": "Cheryl-Fun.jpg",
               ...etc...
            }
        }
    ]

上下文:我们正试图将jsonapi与作为客户/消费者的iOS应用程序集成。

My Problem:很难在iOS客户机中为这些关系编写数据模型(不对每个响应进行循环和排序),因为它们都集中在“包含”数组的同一级别。还有一个问题是,每个“类型”都有自己的属性/字段集,因此需要基于“类型”构建iOS中的数据模型。

问题:是否可以更改此结构,以便将所有包含的对象按类型排序?

我希望“包含”数组按“类型”进行索引,其中该类型的所有对象都在该索引中。也许是这样:

代码语言:javascript
复制
included['user--user'] = [
    {user-object},
    {user-object},
    ...etc.
],
included['file--file'] = [
    {file-object},
    {file-object},
    ....etc.
],

我假设这需要一个带有某种钩子的自定义模块,在返回到iOS应用程序之前,我可以在那里循环和排序数据。但是,还没有找到任何关于这类json响应修改的文档。

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2021-01-22 10:40:56

Drupal实现了JSON:API规范。该规范指定如何对资源进行编码。如果它作为主数据返回或作为关系资源包含,则两者都是。

如果希望以另一种格式返回数据,则需要按照另一种规范在Drupal中实现您自己的REST。

但是,如果这只是关于管理客户端中的数据,我建议使用JSON:API规范的现有库之一。在jsonapi.org/implementations/上提供了一个实现列表。页面上列出的JSONAPI Swift软件包似乎得到了很好的维护。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65836362

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档