Source: System.Net.Http.Headers.MediaTypeHeaderValue
After serialization/deserialization result should match original value
Additional invalid Parameter inside MediaTypeHeaderValue with NULL Name and "utf-8" Value appear
MediaTypeHeaderValue originalValue = new MediaTypeHeaderValue("application/json")
{
CharSet = "utf-8"
};
string originalStr = originalValue.ToString(); // application/json; charset=utf-8
string serializedStr = JsonConvert.SerializeObject(originalValue); // {"CharSet":"utf-8","Parameters":[{"Name":"charset","Value":"utf-8"}],"MediaType":"application/json"}
MediaTypeHeaderValue deserializedValue = JsonConvert.DeserializeObject<MediaTypeHeaderValue>(serializedStr); // Additional invalid parameter with NULL Name and "utf-8" Value appear
string deserializedStr = deserializedValue.ToString(); // application/json; charset=utf-8; =utf-8
You get that result because the Name property of NameValueHeaderValue isn't settable. A customer JsonConverter is required, or deserialize to a different type.