删除对象键前缀nodejs

时间:2017-03-23 09:45:26

标签: javascript arrays json node.js javascript-objects

这是我的第一篇文章。我不喜欢在论坛上寻求帮助,但我别无选择。我花了很多天试图解决这个问题,但我还没找到任何解决方案。

我的所有问题都从一个返回此数据库的数据库查询开始。

{
"prod_format": "400 ml",
"prod_brand": "Marca",
"prod_image": "192.168.1.45/mini/1046332bb531ab3.jpg",
"prod_name": "Gel de baño o ducha",
"prod_pvp": 2.20,
"prod_shops": [
  {
    "prod_price": 2.29,
    "prod_shop": {
      "prod_shopID": 2,
      "prod_shop_name": "Tienda",
      "prod_shop_image": "192.168.1.45/shops/d4d4sw2.jpg"
    }
  },
  {
    "prod_price": 2.19,
    "prod_shop": {
      "prod_shopID": 5,
      "prod_shop_name": "Tienda",
      "prod_shop_image": "192.168.1.45/shops/g4hbe72.jpg"
    }
  }
]
}

我希望在这种情况下删除键的前缀, prod _ shop _

我无法手动执行此操作,因为这只是我使用的多个查询中的一个,并且此数据可以更改,我需要一个删除这些前缀的动态函数,以使用更多前缀和更多查询。

到目前为止,我一直在尝试:

  • 递归函数,调用自身重新映射对象和 数组,但它不起作用,因为NodeJS是异步的并且是一个 永远不会结束的循环。
  • 使用list函数获取所有键/值以创建新对象 重命名的键,但我找不到任何复杂的工作 对象。
  • 使用链式承诺,我无法确保它有效,但我认为 这是最好的方法。

总之,我想要一个函数,如果我把上面的对象,我得到这个代码。

{
"format": "400 ml",
"brand": "Marca",
"image": "http://192.168.1.45/mini/1046332bb531ab3.jpg",
"name": "Gel de baño o ducha",
"pvp": 2.20,
"shops": [
  {
    "price": 2.29,
    "shop": {
      "shopID": 2,
      "name": "Tienda",
      "image": "http://192.168.1.45/shops/d4d4sw2.jpg"
    }
  },
  {
    "price": 2.19,
    "shop": {
      "shopID": 5,
      "name": "Tienda",
      "image": "http://192.168.1.45/shops/g4hbe72.jpg"
    }
  }
]
}

PS: 我无法编辑原始对象,因为它来自elasticsearch,我无法编辑对象键。

提前致谢,我希望有人能帮助我。

1 个答案:

答案 0 :(得分:2)

为什么不简单地将Json数据视为字符串,然后将“"_prod”替换为“"”?这将删除此前缀的所有出现。

myJsonString.replace('"_prod', '"');

更新:如果你的值可能包含你的前缀,你最好使用正则表达式,只是为了确保你只更改键。