I have an array of json objects,
var js:JsonNode = [{"mango":"green"},{"orange":"yellow"},{"peach":"red"},{"grape":"black"}]
I want just the keys in js, ["mango", "orange", "peach", "grape"]
What is an easy way to do this?
using iterators, this is how you do it
import json
var js = parseJson"""
[{"mango":"green"},{"orange":"yellow"},
{"peach":"red"},{"grape":"black"}]"""
var keys = newSeq[string]()
for obj in js.items:
for k,_ in obj.pairs:
keys.add k
echo keys
@tiberium @kaushalmodi Thanks, I knew it works for openArray[T] but never knew that it works for JsonNode too.
I guess we really need Iterable type then ;)
@mashingan it works for any type which has items defined:
type
MyObject = object
something: int
iterator items(m: MyObject): int =
# Return `something` 10 times
for x in 1..10:
yield m.something
let myobj = MyObject(something: 5)
# Will echo "5" 10 times
for x in myobj:
echo x