【问题标题】:Reshape JSON array in to single JSON将 JSON 数组重塑为单个 JSON
【发布时间】:2020-11-10 18:34:33
【问题描述】:

我的代码中有以下 JSON 数组

jsonList = [{"catName":"Carrom"}, {"catName":"Rugby"}]

在我的情况下,我希望它看起来像一个 JSON

{ "catName": "Carrom", "catName": "Rugby" }

如何将上述 JSON 数组转换为单个 JSON?最好的方法是什么?

【问题讨论】:

  • 您建议的输出不是有效的 JSON,因为您有重复的属性名称...
  • 喜欢上面的评论,如果你想解析你的输出,你会得到{catName: "Rugby"}
  • @DavidMcEleney 是的。但是我想要它,因为我想像这样使用它"$match": { "category": { "$elemMatch": { "catName": "Rugby", "catName": "Carrom" }}, }所以,我想将它转换成这种格式
  • @SuthuraSudharaka 那行不通 - 看起来你需要像 $in: docs.mongodb.com/manual/reference/operator/query/in/#op._S_in 这样的东西
  • 两个键怎么可以同名?

标签: javascript node.js arrays arraylist


【解决方案1】:

根据@JohannesReuter 的上述评论,我将$match 更改如下,现在它可以正常工作了。

感谢大家的帮助

改变我的 api

        `"$match": {
            "category": { "$elemMatch": { "catName": { "$in": ["Chess", "Rugby"] } } 
         },
        }`

现在我将我的 json 转换为 ["Chess", "Rugby"]

【讨论】:

    【解决方案2】:

    也许这对你有用

    // Do this for every json
    var attributes = Object.keys(json1)
    
    for (var i = 0; i < attributes.length; i++) {
      jsonresult[attributes[i]] = json1[attributes[i]]
    }
    

    【讨论】:

      【解决方案3】:

      也许保留为对象数组并使用lodash 进行过滤?

      var catArray = [{"catName":"Carrom"}, {"catName":"Rugby"}];
      
      _.find(catArray, { 'catName': 'Carrom' });
      

      这将返回与该查询匹配的任何元素。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多