speg
1
I’m trying to print out some JSON and the following works in the playground without error:
require "yaml"
value = %[{"hello": "world"}]
parsed = YAML.parse(value).to_json
Returning "{\"hello\":\"world\"}"String
But trying to run the same results in the predicable error:
Error: wrong number of arguments for ‘YAML::Any#to_json’ (given 0, expected 1)
What’s happening here? Is the playground doing some magic? Is there a shorter way to get this into a string without doing:
io = IO::Memory.new
builder = JSON::Builder.new io
builder.start_document
text = parsed.to_json builder
builder.end_document
Can you share the code that’s actually not working, ideally with a playground link that reproduces it?
EDIT: Oh sorry, I took and the following works in the playground without error:
to mean it actually works, but it doesn’t: Carcin
The problem is you need to require "json"
given that’s what allows for converting YAML::Any
into JSON
.
It works in the playground because every program there is prepended with this:
That includes the agent, which is defined here:
That does require "json"
.
Eventually the playground could start using the interpreter so this won’t be a problem anymore.
1 Like
speg
4
Aha, it all makes sense now. Thanks guys!
For anyone else you can look here to see the implementation. There’s even a #to_pretty_json
which makes me extra 