cargo add json_keyquotes_convert
```rust use jsonkeyquotesconvert::{JsonKeyQuoteConverter, Quotes};
let json = JsonKeyQuoteConverter::new("{key: \"va\nl\"}", Quotes::default()) .addkeyquotes().escape_ctrlchars().json();
// JSON string will now be: {\"key\": \"va\nl\"} // Raw JSON will now be: {"key": "va\nl"} ```
```rust use jsonkeyquotesconvert::{jsonkeyquote_utils, Quotes};
let jsonadded = jsonkeyquoteutils::jsonaddkeyquotes("{key: \"va\nl\"}", Quotes::default()); let jsonescaped = jsonkeyquoteutils::jsonescapectrlchars(&jsonadded);
// JSON string will now be: {\"key\": \"va\nl\"} // Raw JSON will now be: {"key": "va\nl"} ```
| Great | Good | Unsupported | | :----------------: | :-----------------: | :-----------: | | :heavycheckmark: | :whitecheckmark: | :x: | | Automatically | Configurable | Unsupported |
* Any unlisted features might be unsupported. *
- Adding quotes around JSON keys:
- Double-quotes: :heavycheckmark: (default)
- Single-quotes: :whitecheckmark:
- Removing quotes around JSON keys:
- Double-quotes: :heavycheckmark:
- Single-quotes: :heavycheckmark:
- Supported quotes around JSON string values:
- Double-quotes: :heavycheckmark:
- Single-quotes: :heavycheckmark:
- Supports control character escaping in JSON string values:
- Newline (\n): :heavycheckmark: :whitecheckmark:
- Tab (\t): :heavycheckmark: :whitecheckmark:
- Supports control character unescaping in JSON string values:
- Newline (\n): :heavycheckmark: :whitecheckmark:
- Tab (\t): :heavycheckmark: :whitecheckmark:
- Supported :heavycheckmark: characters in JSON keys:
- [A-Z] [a-z] [0-9] ` ~ ! @ # $ % € ^ & * ( ) - _ = + \ | ; " ' . < > / ? \r \n \t \f \v <U+0020>(Space)
- Note: ' and " and their escaped variants could be misinterpreted as keyquotes when used as the last character in a JSON key. It is therefore not recommended to start or end a JSON key with these characters.
- Supported :heavycheckmark: characters in JSON values:
- [A-Z] [a-z] [0-9] ` ~ ! @ # $ % € ^ & * ( ) - _ = + \ | : ; " ' . < > / ? \r \n \t \f \v <U+0020>(Space)
The JSON data-format as shown in the tests shares some similarities with both JSON5 and HJSON. Unfortunately, these data-formats differ enough that it can not be parsed by the JSON5 and HJSON parsers, which is why this crate was made.
The JSON data-format as shown in the tests is used by the following software: - VideoPsalm
Regex: Copyright (c) 2014 The Rust Project Developers. Licensed under the MIT license, see LICENSES.MIT for details. The notice can be found at Regex-NOTICE. Website: https://github.com/rust-lang/regex.
oncecell_: Licensed under the MIT license, see LICENSES.MIT for details. Website: https://github.com/matklad/once_cell.