/
parseList.go
72 lines (66 loc) · 1.76 KB
/
parseList.go
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
package mandosjsonparse
import (
"errors"
mj "github.com/ElrondNetwork/arwen-wasm-vm/mandos-go/json/model"
oj "github.com/ElrondNetwork/arwen-wasm-vm/mandos-go/orderedjson"
)
func (p *Parser) processStringList(obj interface{}) ([]string, error) {
listRaw, listOk := obj.(*oj.OJsonList)
if !listOk {
return nil, errors.New("not a JSON list")
}
var result []string
for _, elemRaw := range listRaw.AsList() {
strVal, err := p.parseString(elemRaw)
if err != nil {
return nil, err
}
result = append(result, strVal)
}
return result, nil
}
func (p *Parser) parseByteArrayList(obj interface{}) ([]mj.JSONBytesFromString, error) {
listRaw, listOk := obj.(*oj.OJsonList)
if !listOk {
return nil, errors.New("not a JSON list")
}
var result []mj.JSONBytesFromString
for _, elemRaw := range listRaw.AsList() {
ba, err := p.processStringAsByteArray(elemRaw)
if err != nil {
return nil, err
}
result = append(result, ba)
}
return result, nil
}
func (p *Parser) parseSubTreeList(obj interface{}) ([]mj.JSONBytesFromTree, error) {
listRaw, listOk := obj.(*oj.OJsonList)
if !listOk {
return nil, errors.New("not a JSON list")
}
var result []mj.JSONBytesFromTree
for _, elemRaw := range listRaw.AsList() {
ba, err := p.processSubTreeAsByteArray(elemRaw)
if err != nil {
return nil, err
}
result = append(result, ba)
}
return result, nil
}
func (p *Parser) parseCheckBytesList(obj interface{}) ([]mj.JSONCheckBytes, error) {
listRaw, listOk := obj.(*oj.OJsonList)
if !listOk {
return nil, errors.New("not a JSON list")
}
var result []mj.JSONCheckBytes
for _, elemRaw := range listRaw.AsList() {
checkBytes, err := p.parseCheckBytes(elemRaw)
if err != nil {
return nil, err
}
result = append(result, checkBytes)
}
return result, nil
}