~statianzo/sevenlangs

sevenlangs/io/JSON.io -rw-r--r-- 820 bytes
2fcd4511Jason Staten day one logic style 2 years ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
Json := Object clone do(

  squareBrackets := method(
    l := list()
    l appendProto(Json)
    call message arguments foreach(arg,
      l push(Json doMessage(arg))
    )
    l
  )

  curlyBrackets := method(
    map := Map clone
    map appendProto(Json)
    map colon := method(key, value,
      cleanKey := key asMutable removePrefix("\"") removeSuffix("\"")
      self atPut(cleanKey,value)
    )
    call message arguments foreach(arg,
      map doMessage(arg)
    )

    map
  )
)

j := Json {
  "name": "alice",
  "job": "agent",
  "aliases": [
    "tanya",
    "isla"
  ],
  "neste": [
    "tanya",
    "isla"
  ]
}

k := Json [
  {"name": "ted", "age": 22},
  {"name": "sue", "age": 31}
]

q := Json [
  ["so", ["nested"]]
]

j at("name") println
j at("aliases") println
k at(0) at("age") println

q println