
这可以通过
JsonConverter为您的
SupplierData班级定做来解决。这是转换器的外观:
class SupplierDataConverter : JsonConverter{ public override bool CanConvert(Type objectType) { return (objectType == typeof(SupplierData)); } public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { JToken token = JToken.Load(reader); if (token.Type == JTokenType.Object) { return token.ToObject<SupplierData>(); } return null; } public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { serializer.Serialize(writer, value); }}要使用它,你需要做的是添加
[JsonConverter]到属性
Supplier你的财产
Data类是这样的:
public class Data{ [JsonProperty("supplier")] [JsonConverter(typeof(SupplierDataConverter))] public SupplierData Supplier { get; set; }}下面是运行中的转换器的演示。请注意,该演示假定您具有该
data属性的某种包含对象,因为问题中的JSON不能独立存在。我
RootObject为此定义了一个类:
public class RootObject{ [JsonProperty("data")] public Data Data { get; set; }}实际的演示代码如下:
class Program{ static void Main(string[] args) { string json = @" { ""data"": { ""supplier"": { ""id"": 15, ""name"": ""TheOne"" } } }"; Console.WriteLine("--- first run ---"); RootObject obj = JsonConvert.DeserializeObject<RootObject>(json); DumpSupplier(obj.Data.Supplier); json = @" { ""data"": { ""supplier"": false } }"; Console.WriteLine("--- second run ---"); obj = JsonConvert.DeserializeObject<RootObject>(json); DumpSupplier(obj.Data.Supplier); } static void DumpSupplier(SupplierData supplier) { if (supplier != null) { Console.WriteLine("Id: " + supplier.Id); Console.WriteLine("Name: " + supplier.Name); } else { Console.WriteLine("(null)"); } Console.WriteLine(); }}这是上面的输出:
--- first run ---Id: 15Name: TheOne--- second run ---(null)
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)