我有一个使用JSONCONVERT进行验证的类:
public class TaskEntity{
[Ignore]
public Address Addresses { get; set; }
[JsonProperty(PropertyName = "Addresses.Street1")]
public string Street1 { get; set; }
public string Street2 { get; set; }
public string Number { get; set; }
public string Box { get; set; }
public string ZipCode { get; set; }
public string City { get; set; }
public string Country { get; set; }
}
public class Address
{
public string Street1 { get; set; }
public string Street2 { get; set; }
public string Number { get; set; }
public string Box { get; set; }
public string ZipCode { get; set; }
public string City { get; set; }
public string Country { get; set; }
public override string ToString()
{
return string.Format("{0} {1}{2}, {3} {4}, {5}",
Street1,
Number,
(string.IsNullOrEmpty(Box) ? "" : " " + Box),
ZipCode,
City,
Country);
}
}
实际上,当我对对象进行挑选时,地址是填充数据的,我正在寻找一种告诉jsonconvert的方法,以填充setreet1,并用与地址的相同数据填充。
在这里,我尝试了JSONProperty(propertyName =" addresses.street1"),但它不起作用。
我尝试使用自定义JSONCONVERTER,但无法真正弄清楚如何制作它。我想拥有一些通用的东西,可以应用于具有类型地址的所有类别的所有类。
我的单位测试很简单:
[TestMethod]
public void JsonConvert_CustomResolver_ShouldConvertAddressTypeToFlatBasicProperties()
{
var tasksSerialized = JsonConvert.SerializeObject(new TaskEntity
{
Addresses = new Address
{
Street1 = LocationFaker.Street()
}
});
Console.Write(tasksSerialized);
var taskEntities = JsonConvert.DeserializeObject<TaskEntity>(tasksSerialized);
Assert.IsNotNull(taskEntities.Street1);
}
小提琴:https://dotnetfiddle.net/mqmhna
终于找到了带有这样的jsonconverter的解决方案,我可以在属性中指定属性中的路径,以将我的同类中的属性映射到我的JSON中的子属性?
这是工作小提琴:https://dotnetfiddle.net/x6w1mr