module Json {
import { ../JsonParsing; /Std; ../JsonScanning; }
// Json Exceptions
// scanner exceptions
pub except {
JsonUnexpectedChar{ch : char}
JsonUnexpectedEof{}
JsonUnexpectedName{name : string}
}
// parser exceptions
pub except {
JsonUnexpectedToken{token: JsonToken}
}
// JsonValue
pub typedef JsonObject = Map{string, JsonValue};
pub typedef JsonArray = JsonValue[];
pub union JsonValue {
ref JsonObject |
ref JsonArray |
none |
double |
bool
}
// Json
pub struct Json {}
pub Json.parse(text : string) : JsonValue => {
let parser = JsonParser(text);
return parser.parse();
}
pub Json.stringify(value : JsonValue) : string => {
let writer = JsonWriter();
writer.writeValue(value);
return writer.output;
}
}