【问题标题】:Group similar items in array of objects对对象数组中的相似项进行分组
【发布时间】:2016-01-13 06:58:09
【问题描述】:

您好,我有以下 JSON:

        [
    {
      "name": "Donation",
      "collection": {
        "name": "Donation Company 1",
        "collection": {
          "id": 1,
          "category": "Donation",
          "name": "Some Donation",
          "price": 10,
          "description": "Hahahaha",
          "company": "Donation Company 1"
        }
      }
    },
    {
      "name": "Donation",
      "collection": {
        "name": "Donation Company 1",
        "collection": {
          "id": 2,
          "category": "Donation",
          "name": "Another Donation",
          "price": 50,
          "description": "LoL",
          "company": "Donation Company 1"
        }
      }
    },
    {
      "name": "Insurance Company 1",
      "collection": {
        "name": "Hehe",
        "collection": {
          "id": 3,
          "category": "Insurance",
          "name": "Lorem Ipsum Solor",
          "price": 25,
          "description": "Lmao",
          "company": "Insurance Company 1"
        }
      }
    },
    {
      "name": "Insurance Company 2",
      "collection": {
        "name": "Donation Company 1",
        "collection": {
          "id": 5,
          "category": "Insurance",
          "name": "Sample Extra",
          "price": 500,
          "description": "Lorem ipsum dolor",
          "company": "Insurance Company 2"
        }
      }
    }
  ]

我在尝试将相似的项目组合在一起时遇到问题,因为同一类别中的所有项目都出现在同一类别数组中。 在每个类别中,拥有同一公司的所有项目最终都在同一个公司数组中。

这是我想要完成的一个示例,我使用在线编辑器来构建 JSON: expected-json-output-when-saved

我使用 laravel collect() 辅助函数来构建我的对象数组,我在 foreach 循环中尝试了几种组合,并且已经使用了几个小时,但仍然无法获得返回预期的 JSON。

【问题讨论】:

    标签: json laravel laravel-5 eloquent


    【解决方案1】:

    假设您 json_decode() 该 JSON 字符串并将其存储在 $json 变量中,您可以执行以下操作:

    $collection = collect($json);
    
    $collection = $collection->groupBy('collection.collection.category');
    

    转储$collection 变量以查看结果。

    【讨论】:

    • 感谢您的输入,但我认为您不理解这个问题,我的问题中显示的 JSON 对象是当前返回给客户端的对象。如果您点击我帖子中的链接,您将看到我希望如何返回数据。我已经建立了集合,但无法以这种方式返回。
    • 嗨。也许您需要发布生成该 JSON 字符串的代码,因为我认为它不是来自 Laravel Collection。 AFAIK,Laravel Collection 应该始终在 JSON 中显示为数组。
    • 哦,抱歉,当我看到您的帖子时,我想我睡着了,我现在明白了,是的,它确实是一个集合。在您的帮助下,我能够按类别进行分组以获取此信息:jsoneditoronline.org/?id=aad6ff58280f2bbdc3334dc42ae63507
    • 但是存在第二次分组的问题,我尝试在第一次分组后循环遍历集合,以进一步按公司对项目进行分组,但没有成功。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-28
    • 2015-10-19
    相关资源
    最近更新 更多