Парсинг Json Windows8

Я пробовал несколько способов разобрать json в Windows 8 и часто получаю эту ошибку.

"Информация WinRT: WEB_E_INVALID_JSON_STRING"

Доходит до того, что я использую одну и ту же json-строку, и она работает (более или менее), если я читаю ее из Интернета, но не работает, если я читаю ее из локального файла.

вот код для чтения из веб:

 public async void ExamineJson()
    {
        string responseText = await GetjsonStream();
        ParseJson(responseText);
    }


public async Task<string> GetjsonStream()
    {
        HttpClient client = new HttpClient();
        string url = "http://rmarinho.facilit.us/app/d/rtp/config.json";
        HttpResponseMessage response = await client.GetAsync(url);
        return response.Content.ReadAsString();
    }



    private static void ParseJson(string responseText)
    {
        JsonObject root = new JsonObject(responseText);
        string epg = root.GetNamedString("epgurl");

        JsonArray themes = root["themes"].GetArray();

        for (int i = 0; i < themes.Count; i++)
        {

            JsonObject section = themes[i].GetObject();

        }

    }

Итак, это работает, но если я использую тот же метод разбора и использую этот код для получения файла из локального файла в моем приложении, то происходит сбой с ошибкой "WinRT information: WEB_E_INVALID_JSON_STRING" .

FileSync.Read<string>(installedLocation, "config.json",
           (fileSize, reader) =>
               reader.ReadString(fileSize),
               responseText =>
               {
                   ParseJson(responseText);

               })

   public static class FileSync
{
    public static async void Read<TDocument>(StorageFolder folder, string fileName,
        Func<uint, DataReader, TDocument> reader, Action<TDocument> completion = null)
    {


        StorageFile file;
        IRandomAccessStream stream;
        IInputStream inputStream;
        DataReader dr;

        file = await folder.GetFileAsync(fileName);

        stream = await file.OpenAsync(FileAccessMode.Read);
        inputStream = stream.GetInputStreamAt(0);

        uint fileSize = (uint)stream.Size;

        dr = new DataReader(inputStream);
        await dr.LoadAsync(fileSize);

        Task<TDocument> task = new Task<TDocument>(() => reader(fileSize, dr));
        task.Start();
        TDocument doc = await task;

        if (completion != null)
        {
            completion(doc);
        }
    }

    public static async void Write<TDocument>(StorageFolder folder, string fileName,
CreationCollisionOption collisionOption, TDocument doc,
Action<DataWriter, TDocument> writer, Action<bool> complete = null)
    {
        StorageFile creator;
        IRandomAccessStream stream;
        IOutputStream outputStream;
        DataWriter dw;

        creator = await folder.CreateFileAsync(fileName, collisionOption);

        stream = await creator.OpenAsync(FileAccessMode.ReadWrite);
        outputStream = stream.GetOutputStreamAt(0);

        dw = new DataWriter(outputStream);

        Task task = new Task(() => writer(dw, doc));
        task.Start();
        await task;

        await dw.StoreAsync();
        bool success = await outputStream.FlushAsync();
        if (complete != null)
        {
            complete(success);
        }
    }
}

Кто-нибудь может мне помочь разобраться, это ошибка предварительной версии или я что-то упускаю?!

Спасибо заранее

6
задан Kate Gregory 24 February 2012 в 21:13
поделиться