problemJson
Registers the application/problem+json converter on Ktor's own ContentNegotiation.
Call this before problemXml() if you use both. Registration order breaks the tie when Accept is absent or a wildcard, and JSON should win it: RFC 9457 treats JSON as the canonical serialization and the Appendix B XML form as an equivalent alternative. Everything about Accept matching, quality values included, stays ContentNegotiation's job; this only writes the two register calls a developer would otherwise write by hand.
acceptPlainJson additionally serves problem documents to clients asking for plain application/json. Strictly a client should ask for application/problem+json, but plenty of tooling only ever sends application/json, and §3 lets a server use the problem format unasked. The response is still labelled application/problem+json either way, since that's the only thing marking the body as a problem document; the flag only widens which requests get one. Turn it off to answer such clients with 406 instead.
json governs formatting only; the document's shape comes from the serializer attached to Problem.