Json to struct error 388

This commit is contained in:
Matthew Lazarow 2018-03-27 21:19:07 -04:00 committed by Steve Sanderson
parent 64d7091b2b
commit 25cf73ed80
2 changed files with 41 additions and 1 deletions

View File

@ -1430,7 +1430,7 @@ namespace SimpleJson
obj = value;
else
{
obj = ConstructorCache[type]();
obj = ConstructorCache[type]?.Invoke() ?? Activator.CreateInstance(type);
foreach (KeyValuePair<string, KeyValuePair<Type, ReflectionUtils.SetDelegate>> setter in SetCache[type])
{
object jsonValue;

View File

@ -80,6 +80,46 @@ namespace Microsoft.AspNetCore.Blazor.Test
Assert.Equal(new TimeSpan(7665, 1, 30, 0), person.Age);
}
[Fact]
public void CanSerializeStructToJson()
{
// Arrange
var commandResult = new SimpleError
{
Message = "Test",
ContainsError = true,
ErrorId = 1
};
// Act
var result = JsonUtil.Serialize(commandResult);
// Assert
Assert.Equal("{\"Message\":\"Test\",\"ContainsError\":true,\"ErrorId\":1}", result);
}
[Fact]
public void CanDeserializeStructFromJson()
{
// Arrange
var json = "{\"Message\":\"Test\",\"ContainsError\":true,\"ErrorId\":1}";
//Act
var simpleError = JsonUtil.Deserialize<SimpleError>(json);
// Assert
Assert.Equal("Test", simpleError.Message);
Assert.True(simpleError.ContainsError);
Assert.Equal(1, simpleError.ErrorId);
}
struct SimpleError
{
public string Message { get; set; }
public bool ContainsError { get; set; }
public int? ErrorId { get; set; }
}
class Person
{
public int Id { get; set; }