【问题标题】:Deserializing dynamic json object to listbox databinding将动态 json 对象反序列化为列表框数据绑定
【发布时间】:2015-11-16 11:01:49
【问题描述】:

我有以下 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 路径错误:找不到“名称”属性 'Newtonsoft.Json.Linq.JObject, Newtonsoft.Json, 版本=7.0.0.0, 文化=中性,PublicKeyToken=30ad4fe6b2a6aeed'。绑定表达式: Path='name' DataItem='Newtonsoft.Json.Linq.JObject, Newtonsoft.Json, 版本=7.0.0.0,文化=中性,PublicKeyToken=30ad4fe6b2a6aeed'; 目标元素是“Windows.UI.Xaml.Controls.TextBlock” (名称='文本框');目标属性是“文本”(类型“字符串”)

请在不脱离动态和使用类的情况下将其解析到列表框?

【问题讨论】:

    标签: c# json data-binding listbox


    【解决方案1】:

    您可以创建类来反序列化您的 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);
    

    【讨论】:

    猜你喜欢
    • 2011-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-30
    • 2012-03-07
    • 2023-03-13
    相关资源
    最近更新 更多