反序列化Json:安装Newtonsoft.Json
来自 NuGet。
将json转换为类,然后获取json数据的列表。
在你的 VS 中,编辑>选择性粘贴>将 JSON 作为类粘贴
public class Rootobject
{
public bool success { get; set; }
public Datum[] data { get; set; }
}
public class Datum
{
public Form[] form { get; set; }
}
public class Form
{
public string label { get; set; }
public string name { get; set; }
public string type { get; set; }
public int max_length { get; set; }
public bool required { get; set; }
}
反序列化以获取列表:
var list = JsonConvert.DeserializeObject<Rootobject>(json);
使用StackLayout的Bindablelayout.ItemTemplate来设置Entry的模板:
Xaml:
<StackLayout x:Name="DynamicEntry" BindableLayout.ItemsSource="{Binding forms}">
<BindableLayout.ItemTemplate>
<DataTemplate>
<Entry Placeholder="{Binding label}" MaxLength="{Binding max_length}" />
</DataTemplate>
</BindableLayout.ItemTemplate>
</StackLayout>
背后代码:
public List<Form> forms { get; set; }
public Page1()
{
InitializeComponent();
var json = @"{
'success': 'true',
'data': [
{
'form': [
{
'label': 'Name',
'name': 'name',
'type': 'text',
'max_length': '15',
'required': 'true'
},
{
'label': 'Email',
'name': 'email',
'type': 'email',
'max_length': '30',
'required': 'true'
}
]
}
]
}";
var list = JsonConvert.DeserializeObject<Rootobject>(json);
forms = new List<Form>();
forms = list.data.FirstOrDefault().form.ToList();
this.BindingContext = this;
}
请注意,如果要设置不同类型的键盘,则需要将列表与键盘类进行转换。