正在将动态json对象反序列化为listbox数据绑定



我有以下json:

{
  "COMPETITIONS": [
    {
      "name": "Name 1",
      "id": "76-7011",
      "ltable": "0"
    },
    {
      "name": "Name 2",
      "id": "116-7",
      "ltable": "0"
    },
    {
      "name": "Name 3",
      "id": "217-68",
      "ltable": "0"
    }
  ]
}

使用Json.net 将其反序列化为动态

 dynamic jsonResponse = JsonConvert.DeserializeObject(result);

我想将此数据传递到诸如之类的列表框

lb.ItemsSource = jsonResponse
<Page.Resources>
        <DataTemplate x:Key="DataTemplate1">
            <Grid>
                <TextBlock x:Name="textBox" TextWrapping="Wrap" Text="{Binding name}" d:LayoutOverrides="Width, Height" Foreground="Black"/>
            </Grid>
        </DataTemplate>
    </Page.Resources>

但它告诉我:

错误:BindingExpression路径错误:在上找不到"name"属性'Newtonsoft.Json.Linq.JObject,Newtonsoft.Json,版本=7.0.0.0,Culture=neutral,PublicKeyToken=30ad4fe6b2a6eed'。BindingExpression:Path='name'DataItem='Newtonsoft.Json.Linq.JObject,Newtonsoft.Json,版本=7.0.0.0,文化=中性,PublicKeyToken=30ad4fe6b2a6eed';目标元素是"Windows.UI.Xaml.Controls.TextBlock"(名称="文本框");目标属性是"文本"(类型为"字符串")

有什么建议可以在不脱离动态和使用类的情况下将其解析到列表框中吗?

您可以创建类来反序列化JSON。

public class COMPETITION
{
    public string name { get; set; }
    public string id { get; set; }
    public string ltable { get; set; }
}
public class RootObject
{
    public List<COMPETITION> COMPETITIONS { get; set; }
}

比您可以使用以下代码反序列化

var jsonResponse = JsonConvert.DeserializeObject<COMPETITION>(result);

最新更新