【问题标题】:Hide a property name from output从输出中隐藏属性名称
【发布时间】:2020-10-28 02:33:09
【问题描述】:

我有一个返回数据的函数。该数据来自一个带有属性名称的接口。输出具有属性名称。如果可能的话,我想避免这种情况。

我该怎么做?

界面:

export interface DataNode {
    id?: number,
    type?: string,
    parentId?: number,
    data?: any,
    children?: DataNode[],
    buildings?: DataNode[],
    areas?: DataNode[],
    rooms?: DataNode[],
    flags?: DataNode[],
    details?: DataNode[]
};

创建输出的代码:

export const fromCity = async (
    city: entities.City,
    depth: "none" | "immediate" | "full"
): Promise<DataNode> => {
    return {
        id: city.id,
        type: "City",
        data: {
            name: city.name,
            title: city.title,
            // created: city.created,
            // updatedAt: city.updatedAt
        },
        buildings: depth !== "none" ?
            await mapChildren((building: entities.Building): Promise<DataNode> => {
                building.city = building.city || Promise.resolve(city);
                return fromBuilding(
                    building,
                    depth === "immediate" ? "none" : depth
                );
            })(await (city.buildings || Promise.resolve([]))) : []
    };
};

我从 API 得到的实际输出:

            "id": 1,
                "type": "Building",
                "parentId": 1,
                "data": {
                    "name": "data-center",
                    "title": "Data Center",
                    "subtitle": "Secure Data Center and Cloud NOC",
                    "x": "11.30",
                    "y": "41.50"

我想从 API 中得到什么:

            "id": 1,
                "type": "Building",
                "parentId": 1,
                {
                    "name": "data-center",
                    "title": "Data Center",
                    "subtitle": "Secure Data Center and Cloud NOC",
                    "x": "11.30",
                    "y": "41.50"

注意"data": 的消失。这就是我想要隐藏的。

有没有简单的方法来告诉“不要返回这个属性名,只返回它的值”?

【问题讨论】:

    标签: javascript node.js typescript api


    【解决方案1】:

    对象的键必须是字符串。因此,最接近所需输出的方法是将 "data" 键命名为空字符串 ""

    【讨论】:

    • 虽然这样可行,但它会破坏另一个代码,我必须引用同一个键,并且我不能使用 "" 来引用它。
    • 你可以使用object[""]来引用空键
    【解决方案2】:

    Javascript 不允许你这样做。没有键就不能拥有一个值来访问它,否则数据将无法通过 OBJECT 访问。你可以做什么让它用一个数组输出:

    [
      {
        "id": 1,
        "type": "Building"
        "parentId": 1
      },
      {
        "name": "data-center",
        "title": "Data Center",
        "subtitle": "Secure Data Center and Cloud NOC",
        "x": "11.30",
        "y": "41.50",
      }
    ]
    

    然后你可以访问数据来自

    JSON.parse(JSONresponse[1]);
    

    【讨论】:

    • 我实际上不需要有一个非键值,我只需要从输出中隐藏它。如果这不可行,那么我将不得不尝试其他选项,例如按照您所说的解析输出。
    猜你喜欢
    • 1970-01-01
    • 2019-01-04
    • 2013-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多