In this example, the user can enter any number of key-value pairs until they decide to stop, at which point they receive their input back in the form of JSON. Some example input you could enter could include:
name abraham
age 49
fav_colour red
hello world
(press 'Ctrl Z' on Windows or 'Ctrl D' on Unix)
Use #[cfg(target_os = "some_operating_system")] to handle operating system specific circumstances. In this recipe, we use this to conditionally compile the END_OF_TRANSMISSION constant differently on Windows than on Unix. This key combination tells the OS to stop the current input stream.
This program begins with the idea that a JSON object without a clearly defined schema is nothing but a HashMap<String, String>[9]. Now, serde_json doesn't accept a String as a value, as that would not be general enough. Instead, it wants a serde_json::Value, which you can easily construct by calling the json! macro on pretty much any type [20].
When...