Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/104: Рейтинг темы: голосов - 104, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 20.05.2014
Сообщений: 139

Сериализация массива в JSON-строку

19.07.2016, 15:23. Показов 21005. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Мне необходимо сериализовать массив в 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
class Program
    {
        static void Main(string[] args)
        {
            Product product1 = new Product();
            product1.Name = "Apple";
            product1.Expiry = new DateTime(2008, 12, 28);
            product1.Sizes = new string[] { "Small", "Medium", "Big" };
            MyClass mc1=new MyClass();
            mc1.Prod = product1;
 
            Product product2 = new Product();
            product2.Name = "Cocos";
            product2.Expiry = new DateTime(2010, 05, 15);
            product2.Sizes = new string[] { "Small", "Medium", "Big" };
            MyClass mc2 = new MyClass();
            mc2.Prod = product2;
 
            MyClass[] mcar = new MyClass[2];
            mcar[0] = mc1;
            mcar[1] = mc2;
 
            var json = JsonConvert.SerializeObject(mcar);
            Console.WriteLine(json);
            Console.ReadLine();
            StreamWriter file=new StreamWriter("file.txt");
            file.WriteLine(json);
            file.Close();
        }
    }
 
    class MyClass
    {
        public Product Prod;
    }
    class Product
    {
        public string Name;
        public DateTime Expiry;
        public string[] Sizes;
    }

я получаю JSON-строку данного вида:
Кликните здесь для просмотра всего текста
JSON
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
[
    {"Prod":
        {"Name":
            "Apple",
        "Expiry":
            "2008-12-28T00:00:00",
        "Sizes":
            [
                "Small",
                "Medium",
                "Big"
            ]
        }
    },
    {"Prod":
        {"Name":
            "Cocos",
        "Expiry":
            "2010-05-15T00:00:00",
        "Sizes":
            [
                "Small",
                "Medium",
                "Big"
            ]
        }
    }
]

Как можно сериализовать массив в JSON-строку, чтобы она выглядела подобным образом(имеется ввиду, чтобы было название массива, как "friends" в примере, и затем - перечисление элементов этого массива)
Кликните здесь для просмотра всего текста

JSON
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
{
   "friends": [
        {
            "id": "1",
            "name": "Andrew",               
            "city": "Moscow",               
            "contacts": {
                "mobile": "+7 0000000",
                "email": "andrew@adress.ru"
            }
        },
        {
            "id": "2",
            "name": "Ivan",
            "city": "Kiev",
            "contacts": {
                "mobile": "+38 0000000",
                "email": "ivan@adress.ru"
            }
        },
        {
            "id": "3",
            "name": "Oleg",
            "city": "Paris",
            "contacts": {
                "mobile": "+9 123456789",
                "email": "oleg@adress.ru"
            }
        }
    ]
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.07.2016, 15:23
Ответы с готовыми решениями:

Newtonsoft.Json сериализация в строку
Добрый день! Подскажите, как при помощи библиотеки Newtonsoft.Json можно какой-либо объект сериализовать в строку?

Json-сериализация ассоциативного массива
В PHP есть асоциативный масив. При JSON-сериализации для GET запроса получается такая картина ...

Сериализация в JSON-строку
Добрый день! Мне необходимо реализовать сериализацию в JSON-строку на VB.Net Я написал метод, который получает список из таблицы БД, и...

5
 Аватар для EveKS
601 / 485 / 185
Регистрация: 19.04.2016
Сообщений: 1,885
19.07.2016, 16:35
C#
1
2
3
4
class MyClass
    {
        public Product[] Prod {get; set;}
    }
Добавлено через 3 минуты
cyberforum.ru/csharp-beginners/thread1779342.html
0
0 / 0 / 0
Регистрация: 20.05.2014
Сообщений: 139
19.07.2016, 17:17  [ТС]
А можно немного конкретики по поводу этого? Создав такой массив, нужно будет создавать только один объект класса MyClass, и массив Prod заполнять элементами, и потом полученный массив сериализовывать, как было в коде выше?
0
18 / 18 / 9
Регистрация: 21.02.2015
Сообщений: 81
20.07.2016, 08:08
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
    class Program
    {
        static void Main(string[] args)
        {
            var friendsInfo = new FriendsInfo
            {
                Friends = new List<Friend>
                {
                    new Friend
                    {
                        Id = 1,
                        Name = "Andrew",
                        City = "Moscow",
                        Contacts = new Contacts
                        {
                            Mobile = "+7 0000000",
                            Email = "andrew@adress.ru"
                        }
                    },
                    new Friend
                    {
                        Id = 2,
                        Name = "Ivan",
                        City = "Kiev",
                        Contacts = new Contacts
                        {
                            Mobile = "+38 0000000",
                            Email = "ivan@adress.ru"
                        }
                    },
                    new Friend
                    {
                        Id = 3,
                        Name = "Oleg",
                        City = "Paris",
                        Contacts = new Contacts
                        {
                            Mobile = "+9 123456789",
                            Email = "oleg@adress.ru"
                        }
                    },
                }
            };
 
            var json = JsonConvert.SerializeObject(friendsInfo);
            Console.WriteLine(json);
            Console.ReadLine();
            StreamWriter file = new StreamWriter("file.txt");
            file.WriteLine(json);
            file.Close();
        }
    }
 
    public class Contacts
    {
        [JsonProperty("mobile")]
        public string Mobile { get; set; }
        [JsonProperty("email")]
        public string Email { get; set; }
    }
 
    public class Friend
    {
        [JsonProperty("id")]
        public int Id { get; set; }
        [JsonProperty("name")]
        public string Name { get; set; }
        [JsonProperty("city")]
        public string City { get; set; }
        [JsonProperty("contacts")]
        public Contacts Contacts { get; set; }
    }
 
    public class FriendsInfo
    {
        [JsonProperty("friends")]
        public List<Friend> Friends { get; set; }
    }
0
 Аватар для Midian
606 / 388 / 198
Регистрация: 31.03.2013
Сообщений: 2,689
20.07.2016, 15:53
lord_commander, Есть такой замечательный ресурс: http://json2csharp.com/#
Вот что он сгенерировал из исходника:
JSON
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
{
   "friends": [
        {
            "id": "1",
            "name": "Andrew",               
            "city": "Moscow",               
            "contacts": {
                "mobile": "+7 0000000",
                "email": "andrew@adress.ru"
            }
        },
        {
            "id": "2",
            "name": "Ivan",
            "city": "Kiev",
            "contacts": {
                "mobile": "+38 0000000",
                "email": "ivan@adress.ru"
            }
        },
        {
            "id": "3",
            "name": "Oleg",
            "city": "Paris",
            "contacts": {
                "mobile": "+9 123456789",
                "email": "oleg@adress.ru"
            }
        }
    ]
}
Получили вот такие классы:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class Contacts
{
    public string mobile { get; set; }
    public string email { get; set; }
}
 
public class Friend
{
    public string id { get; set; }
    public string name { get; set; }
    public string city { get; set; }
    public Contacts contacts { get; set; }
}
 
public class RootObject
{
    public List<Friend> friends { get; set; }
}
2
0 / 0 / 0
Регистрация: 20.05.2014
Сообщений: 139
20.07.2016, 15:58  [ТС]
Не знал про такой, благодарю)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.07.2016, 15:58
Помогаю со студенческими работами здесь

Сериализация массива массивов через Json
Здравствуйте. Возникла необходимость сериализовать массив типа string. Сейчас пользуюсь стандартной сериализацией через JsonUtility....

Сериализация JSON
Есть иерархия объектов, например такая: var gallery = {}; gallery.img = {name: &quot;Logo&quot;, path: &quot;C://&quot;, day: new Date()}; gallery.img1...

Сериализация JSON в C#
Доброго времени суток! Начал изучать сериализацию JSON и возникли некоторые недопонимания с моей стороны в плане изучения. Есть следующий...

Сериализация в json
Есть сервер-клиент, работает через асинхронные Udp сокеты, каждые 5 миллисекунд обмениваются информацией в формате json. Проблема в том,...

Сериализация в JSON
Добрый день. Прошерстил доки по сериализации JSON, нагугли несколько библиотек, но так и не смог сериализовать свою структуру. ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru