Why does serde_json::Value puts a String into a depiction like String("Some string") and not like "Some string" or a string literal like Some string? Is there a way to prevent this except using structs?
I'm quite certain this is not what kornel suggested. Rather, changing the implementation of Debug in a way that changes the output is generally not considered a breaking change, whereas changing Display in that way is (at least as far as I remember, that is the policy of the standard library, I don't think this was part of the API evolution RFC). So you shouldn't use the Debug output for any data processing beyond debugging.
Changing Display in std is sometimes considered breaking, but sometimes isn't. There are some practical limits depending on how hard the ecosystem relies on a certain output, of course.