'How do I return an array of structs without flattening it in Solidity?

I am trying to return an array of structs in solidity, but without flattening it .

eg. desired results : 0:tuple(uint256,string,uint256)[]: {0,chris,9000},{1,yassin,6000}

In the code below that i found online, i can return a list of struct that has been flattened :

getMembers()

0:tuple(uint256,string,uint256)[]: 0,chris,9000,1,yassin,6000

pragma solidity ^0.8.0;
pragma experimental ABIEncoderV2;
contract SavingsAccount {
  struct Member{
    uint id;
    string name;
    uint balance;
  }
  mapping (uint => Member) public members;
  event savingsEvent(uint indexed _memberId);
  uint public memberCount;

  constructor() public {
    memberCount = 0;
    addMember("chris",9000);
    addMember("yassin",6000);
  }
  function addMember(string memory _name,uint _balance) public {
    members[memberCount] = Member(memberCount,_name,_balance);
    memberCount++;
  }
  //return Single structure
  function get(uint _memberId) public view returns(Member memory) {
    return members[_memberId];
  }
  //return Array of structure Value
  function getMember() public view returns (uint[] memory, string[] memory,uint[] memory){
      uint[]    memory id = new uint[](memberCount);
      string[]  memory name = new string[](memberCount);
      uint[]    memory balance = new uint[](memberCount);
      for (uint i = 0; i < memberCount; i++) {
          Member storage member = members[i];
          id[i] = member.id;
          name[i] = member.name;
          balance[i] = member.balance;
      }

      return (id, name,balance);

  }
  //return Array of structure
  function getMembers() public view returns (Member[] memory){
      Member[]    memory id = new Member[](memberCount);
      for (uint i = 0; i < memberCount; i++) {
          Member storage member = members[i];
          id[i] = member;
      }
      return id;
  }
}

Is there a way I can keep the an struct format inside the array of structs ?



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source