Получить строку JSON из Akavache - PullRequest
0 голосов
/ 20 сентября 2019

В моем приложении Xamarin есть некоторые кэшированные объекты с Akavache.В целях тестирования я пытаюсь получить кэшированные данные в формате необработанных строк JSON.Я пробовал следующее, но я получаю странную строку:

protected readonly IBlobCache cache;
private void ViewCachedData(string key) => this.cache.Get(key).Subscribe(OnDataLoaded);
private void OnDataLoaded(byte[] data) => Debug.WriteLine(Encoding.ASCII.GetString(data));

Debug.WriteLine будет печатать только вопросительный знак, но проверяя значение, я вижу частично JSON:

"?\0\0Value\0?\0\0EmployeeNumber\0\b\0\0\0848\0FirstName\0\0\0\0aaron\0LastName\0\0\0\0jones\0\nPreferredFirstName\0CellPhoneNumber\0\v\0\0\05555555555\0\n\0\0\0"

Ответы [ 2 ]

1 голос
/ 20 сентября 2019

Akavache не хранит вещи в JSON, он сохраняет их в BSON

0 голосов
/ 23 сентября 2019

Я смог решить эту проблему с помощью следующего кода:

private void OnDataLoaded(byte[] data)
{
    using (var reader = new BsonReader(new MemoryStream(data)))
    {
        var serializer = JsonSerializer.Create(new JsonSerializerSettings());
        var json = serializer.Deserialize<JObjectWrapper>(reader).Value;
        Debug.WriteLine(json);
    }
}

private class JObjectWrapper
{
    public JObject Value { get; set; }
}
...