2015-11-16 19 views
0

我有以下JSON:反序列化動態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> 

但它告訴我:

Error: BindingExpression path error: 'name' property not found on 'Newtonsoft.Json.Linq.JObject, Newtonsoft.Json, Version=7.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed'. BindingExpression: Path='name' DataItem='Newtonsoft.Json.Linq.JObject, Newtonsoft.Json, Version=7.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed'; target element is 'Windows.UI.Xaml.Controls.TextBlock' (Name='textBox'); target property is 'Text' (type 'String')

任何意見,請解析這個列表框,而不會離開動態和使用類?

回答

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); 
+0

由於反序列化,有沒有辦法把這個作爲動態的而不是創建類的? –

+0

請參閱此鏈接。 http://stackoverflow.com/questions/3142495/deserialize-json-into-c-sharp-dynamic-object –