Query String Parser / JSON Converter
Parse query strings to JSON or serialize flat JSON objects back to query strings.
Query parsing follows browser form-style behavior: a leading ? is optional, repeated keys stay repeated, and + decodes to a space.
JSON to query string supports flat objects only. Scalars become one param, arrays of scalars become repeated keys, nested objects are rejected, and null becomes an empty value.