Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Dmitrin
21 / 21 / 3
Регистрация: 04.12.2012
Сообщений: 519
#1

Парсинг JSON для Android - Android

25.10.2015, 15:26. Просмотров 196. Ответов 0
Метки нет (Все метки)

Здравствуйте. Есть на WindowsPhone + Windows 8.1 решение. Там есть общий проект (Shared). И есть класс, который парсит json файл. Вот пример кода

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Threading.Tasks;
using Windows.Data.Json;
using Windows.Storage;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Media.Imaging;
 
 
namespace App.Data
{
    public class SampleDataGroup
    {
        public SampleDataGroup(String uniqueId, String title, String subtitle, String imagePath, String description)
        {
            this.UniqueId = uniqueId;
            this.Title = title;
            this.Subtitle = subtitle;
            this.Description = description;
            this.ImagePath = imagePath;
        }
 
        public string UniqueId { get; private set; }
        public string Title { get; private set; }
        public string Subtitle { get; private set; }
        public string Description { get; private set; }
        public string ImagePath { get; private set; }
    }
 
    public sealed class SampleDataSource
    {
        private static SampleDataSource _sampleDataSource = new SampleDataSource();
 
        private ObservableCollection<SampleDataGroup> _groups = new ObservableCollection<SampleDataGroup>();
        public ObservableCollection<SampleDataGroup> Groups
        {
            get { return this._groups; }
        }
 
        public static async Task<IEnumerable<SampleDataGroup>> GetGroupsAsync()
        {
            await _sampleDataSource.GetSampleDataAsync();
            return _sampleDataSource.Groups;
        }
 
        public static async Task<SampleDataGroup> GetGroupAsync(string uniqueId)
        {
            await _sampleDataSource.GetSampleDataAsync();
            var matches = _sampleDataSource.Groups.Where((group) => group.UniqueId.Equals(uniqueId));
            if (matches.Count() == 1) return matches.First();
            return null;
        }
 
        public static async Task<SampleDataItem> GetItemAsync(string uniqueId)
        {
            await _sampleDataSource.GetSampleDataAsync();
            var matches = _sampleDataSource.Groups.SelectMany(group => group.Items).Where((item) => item.UniqueId.Equals(uniqueId));
            if (matches.Count() == 1) return matches.First();
            return null;
        }
 
        private async Task GetSampleDataAsync()
        {
            if (this._groups.Count != 0)
                return;
 
            Uri dataUri = new Uri("ms-appx:///DataModel/SampleData.json");
 
            StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(dataUri);
            string jsonText = await FileIO.ReadTextAsync(file);
            JsonObject jsonObject = JsonObject.Parse(jsonText);
            JsonArray jsonArray = jsonObject["Groups"].GetArray();
 
            foreach (JsonValue groupValue in jsonArray)
            {
                JsonObject groupObject = groupValue.GetObject();
                SampleDataGroup group = new SampleDataGroup(groupObject["UniqueId"].GetString(),
                                                            groupObject["Title"].GetString(),
                                                            groupObject["Subtitle"].GetString(),
                                                            groupObject["ImagePath"].GetString(),
                                                            groupObject["Description"].GetString());
                this.Groups.Add(group);
            }
        }
    }
}
Необходимо сделать подобное на Android (используя VS 13 + Xamarin). Пытаюсь создать файл в проекте Android SampleDataSource.cs, но там нельзя добавлять пространство Windows.Data.Json и Windows.Storage для использования классов StorageFile, JsonObject и др. Необходимо в решение добавить другой проект, чтобы можно было это сделать? Или придется полностью переделывать парсер? Вообще получится использовать эти асинхронные методы для приложения Android?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.10.2015, 15:26     Парсинг JSON для Android
Посмотрите здесь:

Android Парсинг JSON'а
Android Парсинг большого объема JSON данных
Android Парсинг json, многомерный массив с разными типами данных
Android Парсинг JSON-файла
Json http парсинг. Массивы Android
Парсинг JSON ответа от сервера Android
Android JSON Android
Android Парсинг json
Android Парсинг JSON
Парсинг JSON объекта Android
Парсинг Json Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 06:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru