我是新开发的Windows UWP应用程序,我正在尝试解析资产文件夹中的JSON文件。我见过很多教程,但是当我尝试它们时它们不起作用。请有人帮我解析一下,如果你能举一个例子。
我正在使用VS2017和C#;
这是我想要使用的库:
using Windows.Data.Json;
我的代码是:
private Uri appUri = new Uri("ms-appx:///Assets/marker.json");
private string title;
private void ConverJSONtoObjects()
{
try
{
Uri appUri = new Uri(fileName);//File name should be prefixed with 'ms-appx:///Assets/*
StorageFile anjFile = StorageFile.GetFileFromApplicationUriAsync(appUri).AsTask().ConfigureAwait(false).GetAwaiter().GetResult();
string jsonText = FileIO.ReadTextAsync(anjFile).AsTask().ConfigureAwait(false).GetAwaiter().GetResult();
JsonArray obj = JsonValue.Parse(jsonText).GetArray();
for (uint i = 0; i < obj.Count; i++)
{
title = obj.GetObjectAt(i).GetNamedString("name");
}
message("Place", title);
}
catch (Exception ex)
{
message("Error", ex.ToString());
}
}
我收到此错误: error handled by Exception
我的档案是这样的:
[
{
"id":1,
"name":"Cabañas Nuevo Amanecer",
"lat":"18.402785",
"lng":"-70.094953",
"type":"Normal",
"phone":"No Disponible",
"price":"DOP 500",
"image":"http://i65.tinypic.com/10mif69.jpg"
},
{
"id":2,
"name":"Cabañas Costa Azul",
"lat":"18.424746",
"lng":" -69.990333",
"type":"Lujosa",
"phone":"(809) 539-6969",
"price":"DOP 4453",
"image":"http://i64.tinypic.com/wcd5b8.png"
}
]
答案 0 :(得分:3)
您可能正在寻找无数的JSON库之一。你应该从Json.Net开始,这是最受欢迎的选择。 (您可以查看Service Stack Text,FastJsonParser或Jil等替代方案。
一种简单的方法是声明一个与您预期的数据模式匹配的类:
public class PointOfInterest
{
public int Id { get; set; }
public string Name { get; set; }
// ...
}
使用反序列化。:
var poiArray = JsonConvert.DeserializeObject<PointOfInterest[]>(jsonString, new JsonSerializerSettings
{
ContractResolver = new CamelCasePropertyNamesContractResolver()
});
根据您的更新要求进行编辑,您必须执行以下操作:
var array = JArray.Parse(jsonString);
foreach(JObject item in array){
var poi = new PointOfInterest()
poi.Id = (int)item.GetNamedNumber("id");
//...
}