Json.NET lists "Case-insensitive property deserialization" as one of the advertised features. I have read that an attempt will first be made to match the case of the property specified and if a match is not found a case-insensitive search is performed. This does not appear to be the default behavior however. See the following example:
var result =
JsonConvert.DeserializeObject<KeyValuePair<int, string>>(
"{key: 123, value: "test value"}"
);
// result is equal to: default(KeyValuePair<int, string>)
If the JSON string is altered to match the case of the properties ("Key" and "Value" vs "key" and "value") then all is well:
var result =
JsonConvert.DeserializeObject<KeyValuePair<int, string>>(
"{Key: 123, Value: "test value"}"
);
// result is equal to: new KeyValuePair<int, string>(123, "test value")
Is there a way to perform to case-insensitive deserialization?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…