scalarText(source: Text) (answer: Text) { answer = dever.json.toText(dever.json.encode(source)) } decodeList(value: Json) (items: List) { decoded: List = dever.json.decode(value) items = decoded } type DecodeResult { Decoded(values: List) error Invalid(cause: dever.json.JsonResult) } decodeCaptured(value: Json) (answer: Int) { decoded: DecodeResult = result(dever.json.decode(value)) answer = capturedLength(decoded) } capturedLength(value: DecodeResult.Decoded(values)) (answer: Int) recover("无效输入返回负数") { answer = length(values) } capturedLength(value: DecodeResult.Invalid(cause)) (answer: Int) recover("无效输入返回负数") { answer = -1 } type State { Ready Busy } decodeState(value: Json) (ready: Bool) { state: State = dever.json.decode(value) ready = state == State.Ready } scalarFloat(source: Float) (answer: Text) { answer = dever.json.toText(dever.json.encode(source)) } type Payload { values: List } encode(values: List) (answer: Text) { payload = Payload { values = values } answer = dever.json.toText(dever.json.encode(payload)) } type Nested { value: Json } nested(value: Json) (answer: Text) { payload = Nested { value = value } answer = dever.json.toText(dever.json.encode(payload)) } lookup(source: Text) (answer: Int) { value = dever.json.fromText(source) answer = number(dever.json.propertyValue(value, "count")) } number(value: null) (answer: Int) { answer = -1 } number(value: Json) (answer: Int) { answer = dever.json.asInteger(value) } update(source: Text) (answer: Text) { value = dever.json.fromText(source) answer = dever.json.toText(dever.json.setProperty(value, "count", dever.json.integer(43))) } document(source: Text) (answer: Text) { value = dever.json.parse(source) answer = dever.json.stringify(value) } type Fixed { text: Text, amount: Int, ratio: Float } fixedRecord(source: Text, ratio: Float) (answer: Text) { value = Fixed { text = source, amount = 7, ratio = ratio } answer = dever.json.toText(dever.json.encode(value)) } arrayText(values: List) (answer: Text) { answer = dever.json.toText(dever.json.array(values)) }