【发布时间】:2017-08-02 09:01:28
【问题描述】:
目前我被困在如何将 JSON 数据传递给列表视图。
背景信息:软件会定期创建一个 json 文件,该文件可通过网络服务获得(示例如下)。此数据应解析为用户可以查看进程的列表视图。
JSON 如下例所示(最多可包含 30 个进程)
{
"file_timestamp”: "00:00:00 AM",
"process": [{
"id": "1",
"fzg_nr": "0123",
"fzg_kz": "KHSKDNJK",
"timestamp": "03:53:25 AM"
},
{
"id": "2",
"fzg_nr": "0124",
"fzg_kz": "UFJSDK",
"timestamp": "04:53:25 AM"
},
{
"id": "3",
"fzg_nr": "0125",
"fzg_kz": "KDFJKLD",
"timestamp": "05:53:25 AM"
}
]
}
这是我的 C# 代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;
namespace dfg
{
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class JsonParsingPage : ContentPage
{
public JsonParsingPage()
{
InitializeComponent();
GetJSON();
}
public async void GetJSON()
{
try
{
var client = new System.Net.Http.HttpClient();
var response = await client.GetAsync("http://myinternaliis/xample.JSON");
string json = await response.Content.ReadAsStringAsync();
RootObject rootObject = new RootObject();
ListView listViewJson = new ListView();
if (json != "")
{
rootObject = JsonConvert.DeserializeObject<RootObject>(json);
}
listViewJson.ItemsSource = rootObject.processes;
Content = listViewJson;
}
catch (InvalidCastException e)
{
throw e;
}
ProgressLoader.IsVisible = false;
}
public class Process
{
public string id { get; set; }
public string fzg_nr { get; set; }
public string fzg_kz { get; set; }
public string timestamp { get; set; }
}
public class RootObject
{
public string file_timestamp { get; set; }
public List<Process> processes { get; set; }
}
}
}
XAML 文件只包含进度加载器。
非常感谢任何帮助、提示或参考。提前谢谢,保罗
编辑:我的问题是,列表视图中没有显示数据...
【问题讨论】:
-
1-邮政编码,不是图片。 2-你的问题是什么?我在图像上看到了您如何将数据传递给 ListView。
-
首先:你试过什么?我们无法从您提供的内容中真正看出。确切的问题是什么? 请不要插入代码作为屏幕截图。将其粘贴为格式化代码。请参阅How to Ask 和minimal reproducible example,了解如何提出好的问题。
-
真的很抱歉伙计们,我很难将代码格式化到这个线程中。现在应该没问题了。
-
您的 json 样本有一个名为“process”的属性,而您的 rootobject 类有一个名为“processes”的属性