Skip to content

parsing array of arrays #239

@wangfowen

Description

@wangfowen

Hi there,

I've looked through the documentation and test examples and don't seem to see a way to parse array of arrays. Some JSON I'm trying to parse for example has:

{ other_properties..., choices: [[<choice obj 1_1>], [<choice obj 2_1>, <choice obj 2_2>]] }

I thought standalone collection might work:

class MyRepresenter
   ...
   collection :choices, decorator: ChoicesRepresenter
end

class ChoicesRepresenter
 include Representable::JSON::Collection

 items class: Choice do
   ...
 end
end

If I just do ChoicesRepresenter.new([]).from_json(choices) on an array passed in it works, but nested as the decorator gives this error:

NoMethodError (undefined method `call' for nil:NilClass)

I also tried:

class MyRepresenter
  ...
  collection :choices,
    instance: lambda { |choices| ChoicesRepresenter.for_collection.new([]).from_json(choices.to_json) }
end

class ChoicesRepresenter
  ...

  collection_representer class: Choice
end

That from_json I was also able to verify works on an array passed to it, but in the instance did not work. This gave me:

NoMethodError (undefined method `has_key?' for #Array:0x00007fab964c5a38)

I've also tried variations of the two with values, to_a, nested collection where i didn't declare the name, extend. None of them worked.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions