c# - 如何从 UWP 中的 Assets 文件夹中解析 JSON 文件 - 已关闭

标签 c# json parsing uwp jsonparser

我是新开发的 Windows UWP 应用程序,我正在尝试从我的 Assets 文件夹中解析 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"
}
]

解决方案(2021/11/7更新)

嗨,对于那些遇到同样问题的人,问题出在文件属性中:构建操作需要是内容才能从 UWP 中的 Assets 文件夹调用文件

最佳答案

您可能正在寻找无数 JSON 库之一。您应该从 Json.Net 开始,这是最受欢迎的选择。 (您可以查看替代方案,例如 Service Stack TextFastJsonParserJil )。

一个简单的方法是声明一个与您期望的数据模式匹配的类:

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");
   //...
}

official documentation非常简单。

关于c# - 如何从 UWP 中的 Assets 文件夹中解析 JSON 文件 - 已关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45971463/

相关文章:

c++ - 获取关键字值 C++

android - JSOUP:-1 错误加载 URL

c# - 打开数据连接

c# - 导出到 Excel .xlsx 文件

c# - 用户编辑后数据网格单元格格式不保留?

php - 使用 JSON、XMLHttpRequest 和 PHP 填充数据库的简单示例 file_get_contents ("php://input")不起作用

python - 使用 StanfordParser 从已解析的句子中获取类型依赖项

c# - PictureBox 中的 DragDrop - DragEnter 永远不会被调用

java - 在 Hibernate 中获取表列名称

javascript - 有人请告诉我我的 $.parseJSON [javascript/jquery] 有什么问题吗