我有一个需求列表,每个需求都有我从json中提取的属性,目前我认为我只对JSON中的typeName和requisiteStatusId属性感兴趣。这两个是与要求类型(考试,阅读文章等)及其当前状态相对应的图像的属性。
我已经可以在listview中显示图像,但是我必须显示与typeName和requisiteStatusId对应的图像,例如
{
"id": 1221,
"name": "Visibility - Public Acknowledgement",
"description": "Acknowledgement from Omar during a Q Meeting",
"typeId": 11,
**"typeName": "Proven XP",**
"validationId": null,
"skillId": 131,
"skillName": "Visibility",
"material": "No Material",
"materialUrl": "#",
**"requisiteStatusId": 4,**
"trailName": "General Knowledge",
"trailId": 5,
"levelId": 1
},
依赖于这两个你必须显示相应的图像,有三种状态和10种类型,现在我以这种方式直接显示图像,例如:
public class CustomVeggieCell : ViewCell
{
public CustomVeggieCell()
{
var image = new Image
{
};
var image2 = new Image
{
};
var nameLabel = new Label
{
VerticalTextAlignment = TextAlignment.Center,
TextColor = Color.FromHex("#FF9E9E9E"),
};
var horizontalLayout = new StackLayout()
{
};
//set bindings
nameLabel.SetBinding(Label.TextProperty, "Name", BindingMode.TwoWay);
image.Source = "book.png";
image2.Source = "Palomitashida.png";
//Set properties for desired design
horizontalLayout.Orientation = StackOrientation.Horizontal;
image2.HorizontalOptions = LayoutOptions.EndAndExpand;
nameLabel.HorizontalOptions = LayoutOptions.StartAndExpand;
nameLabel.VerticalOptions = LayoutOptions.Center;
nameLabel.TextColor = Color.FromHex("#FF9E9E9E");
//add views to the view hierarchy
horizontalLayout.Children.Add(image);
horizontalLayout.Children.Add(nameLabel);
horizontalLayout.Children.Add(image2);
View = horizontalLayout;
}
}
我不知道如何从json中提取属性或如何验证它以便使用从json中提取的id告诉我什么类型和状态是要求,我留下它们的图像以便它可以是在上下文中更多 enter image description here
答案 0 :(得分:0)
使用来自here的Nuget的NewtonSoft JSON。您可以通过在解决方案资源管理器中右键单击项目,从Visual Studio将NuGet包添加到项目中。管理NuGet包。
这是我为您创建的课程要求:
public class Requirement
{
public int id { get; set; }
public string name { get; set; }
public string description { get; set; }
public int typeId { get; set; }
public string typeName { get; set; }
public object validationId { get; set; }
public int skillId { get; set; }
public string skillName { get; set; }
public string material { get; set; }
public string materialUrl { get; set; }
public int requisiteStatusId { get; set; }
public string trailName { get; set; }
public int trailId { get; set; }
public int levelId { get; set; }
}
您可以使用以下代码使用NewtonSoft反序列化JSON:
var item = JsonConvert.DeserializeObject<Requirement>("JSON String goes here");
这将符合一项要求。您可能会有一组JSON对象或其他一些结构,因此请根据您的结构调整代码。
您现在可以使用上面反序列化的item
来读取它的值。
如果您将json(没有最后一个逗号和已添加的**)放入文本文件并将文本文件放在bin / debug文件夹中进行快速测试,那么可以将JSON反序列化像这样:
var item = JsonConvert.DeserializeObject<Requirement>(File.ReadAllText("Json.txt"));