Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.04.2016, 21:25   #1
Zeek
Новичок
Джуниор
 
Регистрация: 12.04.2016
Сообщений: 4
По умолчанию Как получить Json нужного вида?

Всем привет!
Как получать Json в таком виде

Код:
{"Rezult":[{"id":20109,"Value":"Table1","Prev":""},{"id":20156,"Value":"Table2","Prev":""}]}

Исходник

Код:
SqlDataAdapter da = new SqlDataAdapter(cmd);
                   da.Fill(dt);
                   System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
                   List<Dictionary<string, object>> rows = new List<Dictionary<string, object>>();
                   Dictionary<string, object> row;
                   foreach (DataRow dr in dt.Rows)
                   {
                       row = new Dictionary<string, object>();
                       foreach (DataColumn col in dt.Columns)
                       {
                           row.Add(col.ColumnName, dr[col]);
                       }
                       rows.Add(row);
                   }
 
 
                   return serializer.Serialize(rows);
НО получаю вот такой ответ

Код:
[{"id":20109,"Value":"Table1","Prev":""},{"id":20156,"Value":"Table2","Prev":""}]
______________________
Используйте тег [CODE] (кнопка с решеткой # в форме сообщения) при вставке кода на форум.

Последний раз редактировалось Alex11223; 12.04.2016 в 21:29.
Zeek вне форума Ответить с цитированием
Старый 12.04.2016, 21:34   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Так вы же и не указали нигде, что вам нужен объект со свойством Result.

Наверно нужен еще один Dictionary и в нем List, а не сразу List.

Вообще мне кажется Json.Net (http://www.newtonsoft.com/json) должен быть проще и удобнее, чем JavaScriptSerializer
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 12.04.2016, 22:02   #3
Zeek
Новичок
Джуниор
 
Регистрация: 12.04.2016
Сообщений: 4
По умолчанию

Спасибо за отзыв
Кодом можете помощь?
поинтенету поискал но ничего не нашел Новичку
Zeek вне форума Ответить с цитированием
Старый 12.04.2016, 22:07   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Каким именно? Я ж сказал уже как это можно исправить, просто создать Dictionary с одним элементом, ключ — "Result", значение — тот List.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 12.04.2016, 23:46   #5
Zeek
Новичок
Джуниор
 
Регистрация: 12.04.2016
Сообщений: 4
По умолчанию

ключ — "Result" ? для Dictionary ?
Dictionary<"Result",rows> R ; ?

Последний раз редактировалось Zeek; 12.04.2016 в 23:50.
Zeek вне форума Ответить с цитированием
Старый 12.04.2016, 23:49   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Код:
var dic = new Dictionary<string, List<rows>>();

dic.Add("Result", list);
вы это имеете виду
Dictionary<string, List<Dictionary<string, object>>> тогда, rows это имя переменной, а не тип.

Или просто Dictionary<string, object>
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 12.04.2016 в 23:52.
Alex11223 вне форума Ответить с цитированием
Старый 13.04.2016, 00:44   #7
Zeek
Новичок
Джуниор
 
Регистрация: 12.04.2016
Сообщений: 4
По умолчанию

Код:
Dictionary<string, object> rows = new Dictionary<string, object>();
                   Dictionary<string, object> row;
                   foreach (DataRow dr in dt.Rows)
                   {
                       row = new Dictionary<string, object>();
                       foreach (DataColumn col in dt.Columns)
                       {
                           row.Add(col.ColumnName, dr[col]);
                       }

                       rows.Add("Result", row);
Выходит вот такая ошибка
An item with the same key has already been added

Последний раз редактировалось Alex11223; 13.04.2016 в 07:38.
Zeek вне форума Ответить с цитированием
Старый 13.04.2016, 06:05   #8
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Если нужно много таких записей с одинаковым ключом, то можно заменить на
Код:
List<Tuple<string, List<Dictionary<string, object>>>>
а ещё лучше List<My> , где My - алиас/тайпдеф или наследник такого тупла, чтобы не плодить везде лапши.
Добавление будет такое:
Код:
Add(new Tuple<string, List<Dictionary<string, object>>>("Rezult", rows));
или
Код:
Add(new My("Rezult", rows));

Последний раз редактировалось phomm; 13.04.2016 в 06:08.
phomm вне форума Ответить с цитированием
Старый 13.04.2016, 08:01   #9
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Выходит вот такая ошибка
An item with the same key has already been added
Потому что надо думать и читать предыдущие сообщения, а не писать что попало.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу получить json Parallelogram JavaScript, Ajax 8 16.03.2016 13:49
JSON Exception [org.apache.json] spectrum988 Помощь студентам 3 11.12.2015 09:25
Как получить json с другого сайта JGalt PHP 5 11.07.2015 12:59
Как из ImageList получить HBITMAP нужного мне bitmap. reiserfs Win Api 6 12.11.2007 21:13