我想使用 Xamarin (C#) 從 json 反序列化繼承的類
類:
public class AnnuaireTelephonique
{
public string nom { get; set; }
public string numero { get; set; }
}
public class RootAnnuaireTelephonique : List<AnnuaireTelephonique>
{
public string nomCategorie { get; set; }
public List<AnnuaireTelephonique> liste => this;
}
我使用繼承類來顯示它,然后使用分組的 listView 但是當我使用以下代碼反序列化時,它不起作用并使應用程式崩潰
var annuaireTelephoniqueJson = JsonConvert.DeserializeObject<List<RootAnnuaireTelephonique>>(ReadData(annuaireTelephoniqueFileName) /*correct json*/);
AnnuaireTelephonique = new ObservableCollection<RootAnnuaireTelephonique>(annuaireTelephoniqueJson);
串列顯示:
<ListView ItemsSource=""
IsGroupingEnabled="true"
x:Name="listData"
HasUnevenRows="True"
SeparatorVisibility="None">
<ListView.GroupHeaderTemplate>
<DataTemplate>
<ViewCell>
<Label
Text="{Binding nomCategorie}"
FontSize="20"
TextColor="Black"
Margin="10"
HorizontalOptions="Center"
VerticalOptions="Start" />
</ViewCell>
</DataTemplate>
</ListView.GroupHeaderTemplate>
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<customButton:CallNumberButton
Text="{Binding nom}"
NumberToCall="{Binding numero}"
FontSize="15"
Margin="8"
TextColor="Black"
BackgroundColor="#E6E6E6"
VerticalOptions="Start"
/>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
Json 示例:
[ { "nomCategorie": "1", "liste": [ { "nom": "A", "numero": "0600000000" }, { "nom": "B", "numero": ""0600000001" }, { "nom": "C", "numero": "0600000002" } ] }, { "nomCategorie": "2", "liste": [ { "nom": "D", "numero": " 0600000003" }, { "nom": "E" "numero": "0600000004" } ] } ]
uj5u.com熱心網友回復:
嘗試這個
public ObservableCollection<AnnuaireTelephonique> AnnuaireTelephonique { get; set; }
var annuaireTelephoniqueList =
JsonConvert.DeserializeObject<List<RootAnnuaireTelephonique>>(ReadData(annuaireTelephoniqueFileName);
AnnuaireTelephonique =
new ObservableCollection(annuaireTelephoniqueList[0].AnnuaireTelephonique);
你必須創建類(不要繼承!)
public class RootAnnuaireTelephonique
{
public string nomCategorie { get; set; }
public List<AnnuaireTelephonique> AnnuaireTelephonique { get; set; }
}
public class AnnuaireTelephonique
{
public string nom { get; set; }
public string numero { get; set; }
}
和螢屏
ItemsSource="{Binding AnnuaireTelephonique}"
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/361143.html
