Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
XAML/C#-JSON中的自动集线器_C#_Json_Xaml_Uwp_Uwp Xaml - Fatal编程技术网

XAML/C#-JSON中的自动集线器

XAML/C#-JSON中的自动集线器,c#,json,xaml,uwp,uwp-xaml,C#,Json,Xaml,Uwp,Uwp Xaml,如何根据XAML/C#中JSON文件的内容自动创建集线器?我的JSON将如下所示: [ { “标题”:“万事如意”, “长度”:“4:53”, “功能”:“不适用” }, { “头衔”:“我撒谎了”, “长度”:“5:04”, “功能”:“不适用” } ] 然后,我想为每个对象自动创建一个中心,然后在其中添加信息。有人知道这是如何实现的吗?假设有一个名为“test.JSON”的JSON文件包含上面显示的内容,并且位于项目的“Assets”文件夹中。“test.json”文件如下所示: [

如何根据XAML/C#中JSON文件的内容自动创建集线器?我的JSON将如下所示:

[
{
“标题”:“万事如意”,
“长度”:“4:53”,
“功能”:“不适用”
},
{
“头衔”:“我撒谎了”,
“长度”:“5:04”,
“功能”:“不适用”
}
]

然后,我想为每个对象自动创建一个中心,然后在其中添加信息。有人知道这是如何实现的吗?

假设有一个名为“test.JSON”的JSON文件包含上面显示的内容,并且位于项目的“Assets”文件夹中。“test.json”文件如下所示:

[
  {
    "Title": "All Things Go",
    "Length": "4:53",
    "Features": "N/A"
  },
  {
    "Title": "I Lied",
    "Length": "5:04",
    "Features": "N/A"
  }
]
现在我们将从这个JSON文件创建一个控件。为此,首先需要从这个JSON文件中逐个读取项(我们可以在这里将其读入一个实体,我创建了一个
Hubcontrol
类),其次需要将这些项设置为属性,然后将
hubcsection
添加到Hubcontrol。因此,示例代码如下所示:

[
  {
    "Title": "All Things Go",
    "Length": "4:53",
    "Features": "N/A"
  },
  {
    "Title": "I Lied",
    "Length": "5:04",
    "Features": "N/A"
  }
]
XAML代码

<Page
 ...
 mc:Ignorable="d" Loaded="Page_Loaded">

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" x:Name="root">    
</Grid>
</Page>

代码隐藏:

public sealed partial class MainPage : Page
{
    public MainPage()
    {
        this.InitializeComponent();
    }

    private async void Page_Loaded(object sender, RoutedEventArgs e)
    {
        StorageFile jsonfile = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///Assets/test.json"));
        string jsonString = await FileIO.ReadTextAsync(jsonfile);
        var Allhubs = JsonArray.Parse(jsonString);
        //Read json file, and deserialization the json string to Hubcontrol class. 
        List<Hubcontrol> hubsources = new List<Hubcontrol>();
        foreach (IJsonValue jsonValue in Allhubs)
        {
            if (jsonValue.ValueType == JsonValueType.Object)
            {
                JsonObject hubcontrolitem = jsonValue.GetObject();
                hubsources.Add(new Hubcontrol()
                {
                    Title = hubcontrolitem.GetNamedString("Title"),
                    Length = hubcontrolitem.GetNamedString("Length"),
                    Features = hubcontrolitem.GetNamedString("Features")
                });
            }
        }
        //Create a new hub control, add hubsections which title is got from json
        Hub HubFromJson = new Hub();
        foreach (Hubcontrol hubcontrolitem in hubsources)
        {
            HubSection sectionitem = new HubSection();
            sectionitem.Header = hubcontrolitem.Title;
            HubFromJson.Sections.Add(sectionitem);
        }
        root.Children.Add(HubFromJson);
    }
}

public class Hubcontrol
{
    public string Title { get; set; }
    public string Length { get; set; }
    public string Features { get; set; }
}
公共密封部分类主页面:第页
{
公共主页()
{
this.InitializeComponent();
}
已加载专用异步无效页(对象发送方,RoutedEventArgs e)
{
StorageFile jsonfile=等待StorageFile.GetFileFromApplicationUriAsync(新Uri(“ms”)-appx:///Assets/test.json"));
string jsonString=await FileIO.ReadTextAsync(jsonfile);
var Allhubs=JsonArray.Parse(jsonString);
//读取json文件,并将json字符串反序列化到Hubcontrol类。
List hubsources=新列表();
foreach(所有集线器中的IJsonValue和jsonValue)
{
if(jsonValue.ValueType==JsonValueType.Object)
{
JsonObject hubcontrolitem=jsonValue.GetObject();
添加(新的Hubcontrol())
{
Title=hubcontrolitem.GetNamedString(“Title”),
长度=hubcontrolitem.GetNamedString(“长度”),
Features=hubcontrolitem.GetNamedString(“功能”)
});
}
}
//创建一个新的hub控件,添加标题来自json的hubsections
Hub HubFromJson=new Hub();
foreach(hubsources中的Hubcontrol hubcontrolitem)
{
HubSection Section Item=新的HubSection();
sectionitem.Header=hubcontrolitem.Title;
HubFromJson.Sections.Add(sectionitem);
}
root.Children.Add(HubFromJson);
}
}
公共类控制
{
公共字符串标题{get;set;}
公共字符串长度{get;set;}
公共字符串特征{get;set;}
}

我上传了演示。

假设有一个名为“test.JSON”的JSON文件包含上面显示的内容,位于项目的“Assets”文件夹中。“test.json”文件如下所示:

[
  {
    "Title": "All Things Go",
    "Length": "4:53",
    "Features": "N/A"
  },
  {
    "Title": "I Lied",
    "Length": "5:04",
    "Features": "N/A"
  }
]
现在我们将从这个JSON文件创建一个控件。为此,首先需要从这个JSON文件中逐个读取项(我们可以在这里将其读入一个实体,我创建了一个
Hubcontrol
类),其次需要将这些项设置为属性,然后将
hubcsection
添加到Hubcontrol。因此,示例代码如下所示:

[
  {
    "Title": "All Things Go",
    "Length": "4:53",
    "Features": "N/A"
  },
  {
    "Title": "I Lied",
    "Length": "5:04",
    "Features": "N/A"
  }
]
XAML代码

<Page
 ...
 mc:Ignorable="d" Loaded="Page_Loaded">

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" x:Name="root">    
</Grid>
</Page>

代码隐藏:

public sealed partial class MainPage : Page
{
    public MainPage()
    {
        this.InitializeComponent();
    }

    private async void Page_Loaded(object sender, RoutedEventArgs e)
    {
        StorageFile jsonfile = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///Assets/test.json"));
        string jsonString = await FileIO.ReadTextAsync(jsonfile);
        var Allhubs = JsonArray.Parse(jsonString);
        //Read json file, and deserialization the json string to Hubcontrol class. 
        List<Hubcontrol> hubsources = new List<Hubcontrol>();
        foreach (IJsonValue jsonValue in Allhubs)
        {
            if (jsonValue.ValueType == JsonValueType.Object)
            {
                JsonObject hubcontrolitem = jsonValue.GetObject();
                hubsources.Add(new Hubcontrol()
                {
                    Title = hubcontrolitem.GetNamedString("Title"),
                    Length = hubcontrolitem.GetNamedString("Length"),
                    Features = hubcontrolitem.GetNamedString("Features")
                });
            }
        }
        //Create a new hub control, add hubsections which title is got from json
        Hub HubFromJson = new Hub();
        foreach (Hubcontrol hubcontrolitem in hubsources)
        {
            HubSection sectionitem = new HubSection();
            sectionitem.Header = hubcontrolitem.Title;
            HubFromJson.Sections.Add(sectionitem);
        }
        root.Children.Add(HubFromJson);
    }
}

public class Hubcontrol
{
    public string Title { get; set; }
    public string Length { get; set; }
    public string Features { get; set; }
}
公共密封部分类主页面:第页
{
公共主页()
{
this.InitializeComponent();
}
已加载专用异步无效页(对象发送方,RoutedEventArgs e)
{
StorageFile jsonfile=等待StorageFile.GetFileFromApplicationUriAsync(新Uri(“ms”)-appx:///Assets/test.json"));
string jsonString=await FileIO.ReadTextAsync(jsonfile);
var Allhubs=JsonArray.Parse(jsonString);
//读取json文件,并将json字符串反序列化到Hubcontrol类。
List hubsources=新列表();
foreach(所有集线器中的IJsonValue和jsonValue)
{
if(jsonValue.ValueType==JsonValueType.Object)
{
JsonObject hubcontrolitem=jsonValue.GetObject();
添加(新的Hubcontrol())
{
Title=hubcontrolitem.GetNamedString(“Title”),
长度=hubcontrolitem.GetNamedString(“长度”),
Features=hubcontrolitem.GetNamedString(“功能”)
});
}
}
//创建一个新的hub控件,添加标题来自json的hubsections
Hub HubFromJson=new Hub();
foreach(hubsources中的Hubcontrol hubcontrolitem)
{
HubSection Section Item=新的HubSection();
sectionitem.Header=hubcontrolitem.Title;
HubFromJson.Sections.Add(sectionitem);
}
root.Children.Add(HubFromJson);
}
}
公共类控制
{
公共字符串标题{get;set;}
公共字符串长度{get;set;}
公共字符串特征{get;set;}
}
我上传了演示