When I run "Populate" after update the version of Newtonsoft.Json to 13.0.1 I get an error:
'Deserialized JSON type 'Newtonsoft.Json.Linq.JArray' is not compatible with expected type 'Newtonsoft.Json.Linq.JObject'.'
This is error happening from the added code:
private JToken? CreateJToken(JsonReader reader, JsonContract? contract)
{
ValidationUtils.ArgumentNotNull(reader, nameof(reader));
if (contract != null)
{
if (contract.UnderlyingType == typeof(JRaw))
{
return JRaw.Create(reader);
}
if (reader.TokenType == JsonToken.Null
&& !(contract.UnderlyingType == typeof(JValue) || contract.UnderlyingType == typeof(JToken)))
{
return null;
}
}
JToken? token;
using (JTokenWriter writer = new JTokenWriter())
{
writer.WriteToken(reader);
token = writer.Token;
}
if (contract != null && token != null)
{
if (!contract.UnderlyingType.IsAssignableFrom(token.GetType()))
{
throw JsonSerializationException.Create(reader, "Deserialized JSON type '{0}' is not compatible with expected type '{1}'."
.FormatWith(CultureInfo.InvariantCulture, token.GetType().FullName, contract.UnderlyingType.FullName));
}
}
return token;
}
How can I handle this change? I don't want to run over my Jobject to check every type.