compiler: support System.Json.* syscalls

This commit is contained in:
Evgenii Stratonikov 2020-06-15 11:08:23 +03:00
parent 6339efac11
commit becb8a0f72
2 changed files with 32 additions and 0 deletions

View file

@ -10,6 +10,10 @@ var syscalls = map[string]map[string]string{
"Next": "System.Enumerator.Next",
"Value": "System.Enumerator.Value",
},
"json": {
"Serialize": "System.Json.Serialize",
"Deserialize": "System.Json.Deserialize",
},
"storage": {
"ConvertContextToReadOnly": "System.Storage.AsReadOnly",
"Delete": "System.Storage.Delete",

28
pkg/interop/json/json.go Normal file
View file

@ -0,0 +1,28 @@
/*
Package json provides various JSON serialization/deserialization routines.
*/
package json
// ToJSON serializes value to json. It uses `System.Json.Serialize` syscall.
// Serialization format is the following:
// []byte -> base64 string
// bool -> json boolean
// nil -> Null
// string -> base64 encoded sequence of underlying bytes
// (u)int* -> integer, only value in -2^53..2^53 are allowed
// []interface{} -> json array
// map[type1]type2 -> json object with string keys marshaled as strings (not base64).
func ToJSON(item interface{}) []byte {
return nil
}
// FromJSON deserializes value from json. It uses `System.Json.Deserialize` syscall.
// It performs deserialization as follows:
// strings -> []byte (string) from base64
// integers -> (u)int* types
// null -> interface{}(nil)
// arrays -> []interface{}
// maps -> map[string]interface{}
func FromJSON(data []byte) interface{} {
return nil
}