DateOnly string does not deserialize to DateOnly Object when target is object. But DateTime strings are deserialized to DateTime objects when the string is in the correct format for a DateTime object (see JsonSerializerSettings.DefaultDateFormatString).
var list = new object[] { DateTime.Now, 123, DateOnly.MaxValue };
var json = JsonConvert.SerializeObject(list);
var listDeserializeObject = JsonConvert.DeserializeObject<object[]>(json);
Assert.AreEqual(list[0], listDeserializeObject[0]); // Working: Type == DateTime
Assert.AreEqual(list[1], listDeserializeObject[1]); // Working: Type == int
Assert.AreEqual(list[2], listDeserializeObject[2]); // Not Working: Type == string, but should be DateOnly
DateOnly string does not deserialize to DateOnly Object when target is object. But DateTime strings are deserialized to DateTime objects when the string is in the correct format for a DateTime object (see JsonSerializerSettings.DefaultDateFormatString).
Source/destination types
Source/destination JSON
Expected behavior
Deserialize as DateOnly Object
Actual behavior
Deserializes as string
Steps to reproduce