Чтение JSON-файла Xamarin Forms Weird Ошибки - PullRequest
0 голосов
/ 02 февраля 2019

Я только начал кодировать с помощью Xamarin Forms, и я кодирую приложение Android с помощью Xamarin Forms.

Я пытаюсь прочитать файл json, но когда я пытаюсь его прочитать, он говоритчто он не может найти файл.

Я пытался поместить файл в разные папки проекта.

Я добавил действие сборки файла json в Embedded Ressource, но это все равно не работает.Я действительно не знаю, где поместить файл и как его импортировать.Я перепробовал многие вещи с StreamReader и многие другие вещи, такие как JSONCovert от newtonsoft json.

private void LoadJson()
{
    string dispo = File.ReadAllText(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Resources), "dispo.json")); ;

    var assembly = typeof(App).GetTypeInfo().Assembly;
    var day = JsonConvert.DeserializeObject<Day>(dispo);

    ls.Add(day.Lundi);
    ls.Add(day.Mardi);
    ls.Add(day.Mercredi);
    ls.Add(day.Jeudi);
    ls.Add(day.Vendredi);
}

И

public class Day
{
    public string Lundi { get; set; }
    public string Mardi { get; set; }
    public string Mercredi { get; set; }
    public string Jeudi { get; set; }
    public string Vendredi { get; set; }
}

Результат, который я получаю:

Unhandled Exception:
System.IO.FileNotFoundException: Could not find file "/dispo.json"

Где я должен положить файл?

1 Ответ

0 голосов
/ 02 февраля 2019

Тип содержимого встроенного ресурса на самом деле не является «файлом» в вашем приложении, а, скорее, байты находятся внутри самой сборки.См. Работа с файлами документов и пример , чтобы узнать, как извлечь встроенный ресурс.

var assembly = IntrospectionExtensions.GetTypeInfo(typeof(LoadResourceText)).Assembly;
Stream stream = assembly.GetManifestResourceStream(
   "YourNamespace.dispo.json");

string text = "";
using (var reader = new StreamReader (stream))
{
    text = reader.ReadToEnd ();
}

См. этот фрагмент кода , который записывает все встроенные ресурсы в окно отладки вывода приложения, это поможет вам определить, правильно ли встроен ваш файл.

В качестве альтернативы

Система проектов Android на самом деле не позволяет просто помещать «файл» в любое место и загружать его при запуске приложения.Вместо этого вы должны добавить его в / Resources / raw / dispo.json , а затем найти путь следующим образом:

var filePath = 
    Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), 
    "dispo.json")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...