diff options
author | majorseitan@blockfreie.org <majorseitan@blockfreie.org> | 2018-04-15 16:20:31 -0400 |
---|---|---|
committer | majorseitan@blockfreie.org <majorseitan@blockfreie.org> | 2018-04-15 16:20:31 -0400 |
commit | e2552a79ed87721a81c246b9cfd053701d665f25 (patch) | |
tree | 8e2e2008afaae431bf0aeccfa0b91789eda10221 | |
parent | 2bc51bd866b52bc738f259ffe6e9fb8f6068a6b6 (diff) |
Handling of JSON escape characters
1. Handle the escape character
\\
-rw-r--r-- | lib/ur/json.ur | 2 | ||||
-rw-r--r-- | tests/jsonTest.ur | 2 |
2 files changed, 3 insertions, 1 deletions
diff --git a/lib/ur/json.ur b/lib/ur/json.ur index 1e3e3f39..7ebb010f 100644 --- a/lib/ur/json.ur +++ b/lib/ur/json.ur @@ -52,6 +52,7 @@ fun escape s = | #"\t" => "\\t" | #"\"" => "\\\"" | #"\'" => "\\\'" + | #"\\" => "\\\\" | x => String.str ch ) ^ esc (String.suffix s 1) end @@ -100,6 +101,7 @@ fun unescape s = | #"t" => "\t" | #"\"" => "\"" | #"\'" => "\'" + | #"\\" => "\\" | x => error <xml>JSON unescape: Bad escape char: {[x]}</xml>) ^ unesc (i+2) diff --git a/tests/jsonTest.ur b/tests/jsonTest.ur index 1be6e7b5..071cf34b 100644 --- a/tests/jsonTest.ur +++ b/tests/jsonTest.ur @@ -1,7 +1,7 @@ open Json fun main () : transaction page = return <xml><body> - <pre>{[ fromJson "\"line 1\\nline 2\"" : string ]}</pre><br/> + <pre>{[ fromJson "\"\\\\line 1\\nline 2\"" : string ]}</pre><br/> {[fromJson "[1, 2, 3]" : list int]}<br/> {[toJson ("hi" :: "bye\"" :: "hehe" :: [])]} </body></xml> |