c # Использовать сопоставления для десериализации различных возможных Jsons в один уникальный объект [дубликат]

Вы можете отправить событие своему родителю, уведомляя родителя о том, что кнопка удаления нажата в вашем дочернем компоненте.

Вы можете проверить это в документации Vue .

Вот как выглядят ваши компоненты:

TodoCard.vue:




App.vue:




1
задан Jared 20 January 2019 в 05:58
поделиться

2 ответа

Лучшей практикой было бы заставить JSON описать объект немного лучше:

"Unit":{
    "UnitYear":"2018",
    "UnitModel":"F250 Super Duty"
}

"Asset":{
    "AssetYear":"2019",
    "AssetModel":"Corvette Stingray"
}

Имея то, что у вас есть сейчас, вы можете добавить метод к каждому классу:

public bool IsValid()
{
    return Model != null && Year.Date == DateTime.MinValue;
}
[ 118] А затем сделайте следующее для каждого класса, который вы хотите протестировать:

        var stringUnit = "{\"UnitYear\":\"2018\",\"UnitModel\":\"F250 Super Duty\"}";
        var assetUnit = "{\"AssetYear\":\"2019\",\"AssetModel\":\"Corvette Stingray\"}";


        var unit = Newtonsoft.Json.JsonConvert.DeserializeObject<Asset>(stringUnit);

        if (unit.IsValid())
        {
            Console.WriteLine(unit.AssetModel);
        }
        else
        {
            Console.WriteLine("Json can't convert this");
        }

То, на что я был бы более склонен взглянуть, было бы примерно так:

Создать тип Enum и Unit Class:

public class Unit
{
   public DateTime DateTime { get; set; }
   public string Model { get; set; }
   public UnitType UnitType { get; set; }

   public bool IsValid()
   {
       return Model != null && DateTime == DateTime.MinValue || UnitType != UnitType.Unknown;
    }
 }

И затем создайте Enum для JSON Converter от Newtonsoft:

[JsonConverter(typeof(StringEnumConverter))]
public enum UnitType
{
    Unknown = 0,
    Asset,
    Unit
}

И затем вы можете попытаться десериализовать все JSON точно так же: [ 1112]

string jsonString = "{\"Year\":\"2019\",\"Model\":\"Corvette Stingray\",\"UnitType\":\"Asset\"}";
var resultUnit = JsonConvert.DeserializeObject<Unit>(jsonString);

if (resultUnit.IsValid())
{
    // This works, do the right thing. When the type matters access resultUnit.UnitType
}
else
{
   //Throw an exception, really badly formed or an Unknown type
}
0
ответ дан Austin T French 20 January 2019 в 05:58
поделиться
 This will be used for mapping your response to the model JsonConvert.DeserializeObject<Unit>(response)

public class Unit
{
    public string UnitYear { get; set; }
    public string UnitModel { get; set; }
}

Make sure that the property names are the same names as your json object that you are passing through 
0
ответ дан Ethan1zn 20 January 2019 в 05:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: