Best way to store key-value pairs in plugin settings?

Overnight it occurred to me that I could also simply use (for example) a JSON string that represented the mapping, then parse that string in the plugin. A JSON string would have the advantage of having escape logic for special characters built in. To really make this work though, you’d want a multiline text box to edit the setting, and the one post I found while searching for this functionality simply recommended a “list” (which was indeed appropriate for the use case in question).

Anyway, some form of first class key-value pair support would be ideal, but this seems like the second-best option. Is a multiline text box possible?