Skip to content
This repository has been archived by the owner on Aug 2, 2022. It is now read-only.

Deserialize Table_rows #716

Open
regisBafutwabo opened this issue Apr 13, 2020 · 1 comment
Open

Deserialize Table_rows #716

regisBafutwabo opened this issue Apr 13, 2020 · 1 comment

Comments

@regisBafutwabo
Copy link

Is there a way to deserialize the table_rows returned data that are serialized since they are not actions? (preferably through eosjs)

here below is the screenshot of what I was trying to accomplish:

  • on the left is the request
  • and on the right is the returned data

Screen Shot 2020-04-13 at 3 00 24 PM

@emperorhan
Copy link

function deserializeTypeData(contract: Contract, account: string, structName: string, data: string | Uint8Array, textEncoder: TextEncoder, textDecoder: TextDecoder): any {
    const type = contract.types.get(structName);
    if (typeof data === "string") {
        data = hexToUint8Array(data);
    }
    if(!type) {
        throw new Error(`Unknown type ${structName} in contract ${account}`);
    }
    const buffer = new SerialBuffer({textDecoder, textEncoder});
    buffer.pushArray(data);
    return type.deserialize(buffer);
}

This works but you should know the struct name from contract code
(ex. for eosio rammarket in eosio.system/exchange_state.hpp the struct name is exchange_state)

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants