neuecc/Utf8Json

Not the entire structure is converted to JSON

unkprog opened this issue · 0 comments

Example:

    [DataContract]
    public class BaseModel
    {
        public BaseModel()
        {
            Name = "BaseModel";
        }

        [DataMember]
        public string Name { get; set; }

    }

    [DataContract]
    public class OneModel :BaseModel
    {
        public OneModel()
        {
            Name = "OneModel";
        }
        public List<BaseModel> OneItems { get; set; } = new List<BaseModel>(new BaseModel[] { new BaseModel() { Name = "One" }, new BaseModel() { Name = "Two" } });
    }

    [DataContract]
    public class TwoModel : OneModel
    {
        public TwoModel()
        {
            Name = "TwoModel";
        }

        [DataMember]
        public List<BaseModel> Items { get; set; } = new List<BaseModel>(new BaseModel[] { new BaseModel() { Name = "One BaseModel" }, new OneModel() { Name = "Two OneModel" } });
    }

Converting to JSON

            string jsonString = System.Text.Encoding.UTF8.GetString(JsonSerializer.Serialize(new TwoModel(), Utf8Json.Resolvers.StandardResolver.Default)); 
            System.Console.WriteLine(jsonString);

We get the following:

{
	"Name":"TwoModel",
	"Items":[
				{"Name":"One BaseModel"},{"Name":"Two OneModel"}
			],
    "OneItems":[{"Name":"One"},{"Name":"Two"}]
}

and it should be the following JSON:

{
	"Name":"TwoModel",
	"Items":[
				{"Name":"One BaseModel"},
				{
				  "Name":"Two OneModel",
				  "OneItems":[{"Name":"One"},{"Name":"Two"}]
				}
			],
    "OneItems":[{"Name":"One"},{"Name":"Two"}]
}