小写嵌套特定键的颠簸变换

问题描述 投票:0回答:2

我有一个 JSON 输入:

{
  "levelOne": [
    {
      "leveltwo": {
        "levelThree": [
          {
            "type": "typeOne",
            "leveltwo": {
              "Id": "101000094794",
              "Id2": "101000013207"
            }
          },
          {
            "type": "typeTwo",
            "leveltwo": {
              "Id": "101000013207",
              "Id2": "101000013207"
            }
          }
        ]
      }
    }
  ]
}

是否有将每个键都小写的 jolt 规范,包括嵌套对象中的键? (在这种情况下,第二层是什么)

{
  "levelone": [
    {
      "leveltwo": {
        "levelThree": [
          {
            "id": "101000094794",
            "id2": "101000013207",
            "type": "typeOne"
          },
          {
            "id": "101000013207",
            "id2": "101000013207",
            "type": "typeTwo"
          }
        ]
      }
    }
  ]
}

目前,我正在使用以下规范(颠簸模板):`

[
  {
    "operation": "shift",
    "spec": {
      "levelOne": {
        "*": {
          "leveltwo": {
            "id": "&3[&2].leveltwo.id",
            "levelThree": {
              "*": {
                "leveltwo": {
                  "Id": "&6[&5].leveltwo.&3[&2].id",
                  "Id2": "&6[&5].leveltwo.&3[&2].id2"
                },
                "type": "&5[&4].leveltwo.&2[&1].type"
              }
            }
          }
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": {
        "$": "&1.key",
        "@": "&1.value"
      }
    }
  },
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "levelOne": {
        "key": "=toLower"
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": {
        "value": "@(1,key)"
      }
    }
  }
]

预期结果(key 应该在 lower levelThree, typeOne, typeTwo):

{"levelone":[{"leveltwo":{"levelthree":[{"id":"101000094794","id2":"101000013207","type":"typeone"},{"id":"101000013207","id2":"101000013207","type":"typetwo"}]}}]}

谢谢!

json jolt
2个回答
0
投票

您好 Priyanka,此规范将解决您的问题。您可以在 modify-overwrite-beta 操作中使用 =toLower case 函数。

[
  {
    "operation": "shift",
    "spec": {
      "levelOne": {
        "*": {
          "leveltwo": {
            "levelThree": {
              "*": {
                "leveltwo": {
                  "*": { 
                    //unwraps the field key and value into 2 feilds(key,Value). 
                    "$": "levelOne.[#4].leveltwo.levelThree.[#2].leveltwo.key",
                    "@": "levelOne.[#4].leveltwo.levelThree.[#2].leveltwo.value"
                  }
                }
              }
            }
          }
        }
      }
    }
  }, {
    "operation": "modify-overwrite-beta",
    "spec": {
      "levelOne": {
        "*": {
          "leveltwo": {
            "levelThree": {
              "*": {
                "leveltwo": {
                  //Key is on right side using toLower to make it lowercase.
                  "key": "=toLower"
                }
              }
            }
          }
        }
      }
    }
  }, {
    "operation": "shift",
    "spec": {
      "levelOne": {
        "*": {
          "leveltwo": {
            "levelThree": {
              "*": {
                "leveltwo": {
                   // Forming the original fields from key and value fields
                  "value": "levelOne.[#6].leveltwo.levelThree.[#2].leveltwo.@(1,key)"
                }
              }
            }
          }
        }
      }
    }
  }
]

0
投票

您可以为每个对象键(在本例中为

shift
modify
)重复应用连续的
shift
-
levelOne
-
levelThree
三重奏,这需要大小写转换,例如

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "*": {
          "*": {
            "id": "&3[&2].&1.id",
            "*": {
              "*": {
                "*": {
                  "Id": "&6[&5].&1.&3[&2].id",
                  "Id2": "&6[&5].&1.&3[&2].id2"
                },
                "type": "&5[&4].&3.&2[&1].type"
              }
            }
          }
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": {
        "$": "&1.key",
        "@": "&1.value"
      }
    }
  },
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "*": {
        "key": "=toLower"
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": {
        "value": "@(1,key)"
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": {
        "*": {
          "*": {
            "*": {
              "$": "&4.&3.&2.&1.key",
              "@": "&4.&3.&2.&1.value"
            }
          }
        }
      }
    }
  },
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "*": {
        "*": {
          "*": {
            "*": {
              "key": "=toLower",
              "value": {
                "*": {
                  "type": "=toLower"
                }
              }
            }
          }
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": {
        "*": {
          "*": {
            "*": {
              "value": "&4[&3].&2.@(1,key)"
            }
          }
        }
      }
    }
  }
]
© www.soinside.com 2019 - 2024. All rights reserved.