我想知道如何使用SHIFT和MODIFY-OVERWRITE-BETA进行以下输入.请给我explain how it works分的答案.

Input:

[
  {
    "data": {
      "firstName": "Leanne",
      "lastName": "Graham",
      "id": 111
    }
  },
  {
    "data": {
      "firstName": "Ervin",
      "lastName": "Howell",
      "id": 222
    }
  }
]

Desired output:

{
  "111": {
    "fullName": "Leanne Graham"
  },
  "222": {
    "fullName": "Ervin Howell"
  }
}

推荐答案

你可以用不同的方法来解决这个问题.

1. This spec is more understandable:

  1. shift操作中,以值id为关键字对列表进行排序:@(1,id)
  2. modify-overwrite-beta运算中的连接firstNamelastName:=concat(@(1,firstName),' ',@(1,lastName))
  3. 删除remove操作中未使用的关键点:id, firstName, lastName
[
  {
    "operation": "shift",
    "spec": {
      "*": { // index of the array: 1, 2
        "*": { // data object
          "*": "@(1,id).&" // value of id in the current object: 111, 222
        }
      }
    }
  },
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "*": { // ids: 111, 222
        "fullName": "=concat(@(1,firstName),' ',@(1,lastName))"
      }
    }
  },
  {
    "operation": "remove",
    "spec": {
      "*": { // ids: 111, 222
        "id": "",
        "firstName": "",
        "lastName": ""
      }
    }
  }
]

2. This spec is shorter:

  1. modify-overwrite-beta运算中的连接firstNamelastName:=concat(@(1,firstName),' ',@(1,lastName))
  2. 获取值id作为键,然后将fullname放入其中:key @(1,id).fullName,value @(0,fullName)
[
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "*": {
        "*": {
          "fullName": "=concat(@(1,firstName),' ',@(1,lastName))"
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": {
        "*": {
          "@(0,fullName)": "@(1,id).fullName"
        }
      }
    }
  }
]

The following image can help more:

enter image description here

Json相关问答推荐

使用JSONata将具有相同键的字典合并

将json数组反序列化为选项 struct

PowerShell:将Invoke-WebRequest与变量一起使用

如何在Haskell中解析JSON,其中字段的名称可以是多个值之一,但应该转换为单个Haskell类型?

VBA json按特定属性名称提取所有数据

震动范围改善

展平多个数组以保持顺序

如何使用jolt将嵌套数据变成线性数据

带有 API 测试的 Typescript JSON 模式验证

将请求中的数据推送到数组中

Oracle Apex - 将 JSON 对象分配给变量以返回

为什么在测试 RSPEC 时 JBuilder 不返回 JSON 中的响应正文

使用 boost 属性树读取 int 数组

如何使用 Kotlin + Jackson 将 JSON 反序列化为 List

JSON对象中的JavaScript递归搜索

如何使用 LWP 发出 JSON POST 请求?

我应该如何处理 JSON 中的 HATEOAS 链接和引用?

在 React 中访问子级的父级状态

如何将 MongoDB 查询转换为 JSON?

JSON 和 BSON 哪个更轻量级?