58 / 57 / 15
Регистрация: 15.09.2012
Сообщений: 557
|
||||||
1 | ||||||
.NET 2.x Json-сериализация ассоциативного массива05.02.2015, 21:31. Показов 2485. Ответов 19
Метки нет (Все метки)
В PHP есть асоциативный масив. При JSON-сериализации для GET запроса получается такая картина
Добавлено через 1 час 44 минуты Это думаю нужно применять кодирование application/x-www-form-urlencoded. Кто знает как это делать средствами Net2.0 ?
0
|
05.02.2015, 21:31 | |
Ответы с готовыми решениями:
19
Newtonsoft.Json.JsonConvert Де-/Сериализация .NET и JS Сериализация полученных данных из MySQL в формате JSON Сериализация и десериализация в Json нескольких разных классов Сериализация структуры из массива |
58 / 57 / 15
Регистрация: 15.09.2012
Сообщений: 557
|
|||||||||||||||||||||
06.02.2015, 09:48 [ТС] | 3 | ||||||||||||||||||||
Попытка номер 2.
Если создать Dictionary
1. Как получить выше указанную строку ? (Имеется ввиду есть ли уже готовые методы. Можно конечно в цикле распарсить словарь и получить данную строку. Но я думаю это кодирование application/x-www-form-urlencoding) 2. Второй вопрос. Если есть такой метод (или набор методов) когда мы получаем выше описанную строку параметров из словаря,то : ЧТО должно быть на входе, чтобы на выходе получить
0
|
58 / 57 / 15
Регистрация: 15.09.2012
Сообщений: 557
|
|
06.02.2015, 10:39 [ТС] | 5 |
Продемонстрируйте в одну строчку второй вопрос. Имеется ввиду должен быть общий контейнер для параметров - в нем лежат масивы, словари, списки. Это все должно распарсится с этого общего контейнера и сформироваться правильная строка параметров для GET запроса.
0
|
06.02.2015, 10:55 | 6 |
ASDFD12, теперь я понял, что вы хотите. В одну строчку не получится, да. Тем не менее, добавляется только ситуация с массивом/словарём. Тут у меня просто нет понятия, как это должно выглядеть, но опять же, всё это реализуется совсем несложным образом.
0
|
58 / 57 / 15
Регистрация: 15.09.2012
Сообщений: 557
|
||||||
06.02.2015, 11:04 [ТС] | 7 | |||||
Проблема в том что я не нашел на С# комбинации (список словарей, масив словарей, словарь словарей), которая бы соответствовала асоциативному масиву в PHP , который распарсивается в такую строчку
Чем предложите заменить?
0
|
58 / 57 / 15
Регистрация: 15.09.2012
Сообщений: 557
|
||||||
06.02.2015, 12:02 [ТС] | 9 | |||||
Спасибо. Порадовала строчка
Интересно только, нет ли метода кодирование строки в application/x-www-form-urlencoding? Он по сути должен был автоматически это все сделать
0
|
06.02.2015, 12:09 | 10 | |||||
да вот в этом-то и проблема, что нет. Смутил меня Dictionary в вашем примере.
Не по теме: Решение, которое я удалил в предыдущем посте...
0
|
58 / 57 / 15
Регистрация: 15.09.2012
Сообщений: 557
|
|
06.02.2015, 12:27 [ТС] | 11 |
Может предложите более оригинальное решение.
Смысл вообще простой. 1.Нужен удобный и прозрачный механизм добавление параметров в контейнер (это типо для пользователя библиотеки). На уровне библиотеки : Нужно также удобно сортировать все параметры по ключу в алфавитном порядке. И легко формировать строку параметров для GET запроса. С описаным выше нюансом для асоциативного масива PHP. HttpWebRequest не используется.
0
|
06.02.2015, 12:44 | 12 | |||||
ASDFD12, я просто со 2ым фреймворком не работал вообще, и немного подзабыл уже что там есть, а чего нет. Сейчас попробую чего-нибудь придумать.
1
|
58 / 57 / 15
Регистрация: 15.09.2012
Сообщений: 557
|
|
06.02.2015, 13:03 [ТС] | 13 |
Спасибо. Только хотел уточнить что передаются данные в формате Json.
Типо сначала конвертируем в Json, дальше нужно преобразовать в формат application/x-www-form
0
|
Master of Orion
|
|||||||||||
07.02.2015, 00:55 | 14 | ||||||||||
ASDFD12, ну так а причем тут JSON?
Почему этот метод лучше? А очень просто:
1
|
58 / 57 / 15
Регистрация: 15.09.2012
Сообщений: 557
|
|
07.02.2015, 11:06 [ТС] | 15 |
Psilon, решение красивое, только в Net2.0 не поддерживается.
И я так понял он не сработает если value в свою очередь будет также словарем или списком словарей.
0
|
Master of Orion
|
|||||||||||
07.02.2015, 11:14 | 16 | ||||||||||
ASDFD12, ну в .Net 2.0 можно тоже написать
Можно убрать ограничение на ICollection (я просто его использую чтобы прикинуть, сколько памяти нужно билдеру), но можно и просто выделить большой кусок:
ASDFD12, по-умолчанию querystring это словарь - 1 ключ 1 значение, там не может быть вложенных словарей.
0
|
58 / 57 / 15
Регистрация: 15.09.2012
Сообщений: 557
|
|||||||||||
07.02.2015, 11:27 [ТС] | 17 | ||||||||||
Конечно в таком случае все банально просто.
Дело в том что в values как раз могут находится список словарей - это будет вместо асоциативного масива PHP и он будет парсится как предложил Cupko,
И так теоретически может быть до бесконечности, тоесть subvalue1 может быть в свою очередь словарем). Думаю это реализовать через рекурсивный вызов. Но еще в процесе)
0
|
Master of Orion
|
|
07.02.2015, 11:33 | 18 |
ASDFD12, это не стадартный (чего еще от PHP ожидать ) формат передачи, Поэтому логично, что нужно самому писать метод для такой обработки. Тем более почему-то .Net 2.0 онли (хотя даже в XP, который уже почти помер, поддерживает 3.5)
0
|
58 / 57 / 15
Регистрация: 15.09.2012
Сообщений: 557
|
|
07.02.2015, 11:38 [ТС] | 19 |
0
|
Master of Orion
|
||||||
07.02.2015, 17:15 | 20 | |||||
Cupko, лучше так писать (во-первых не надо дважды кастовать, во-вторых мало кто реализует IList.
ват? http://unity3d.com/unity/whats-new/unity-4.5.1 Добавлено через 3 минуты Cupko, в общем, честно говоря, я не понимаю, зачем вам такое извращение. Нужен JSON - юзайте json, нужно конвертировать в querystring - она не предназначена для хранения иерархической информации. Смешивать одно с другим - еще хуже. Добавлено через 5 часов 31 минуту i++ забыл в цикле.
1
|
07.02.2015, 17:15 | |
07.02.2015, 17:15 | |
Помогаю со студенческими работами здесь
20
Ошибка при обработке Json - Cannot deserialize the current JSON array because the type requires a JSON object Ошибка при обработке Json - Cannot deserialize the current JSON array because the type requires a JSON object Сериализация массива экземпляров класса Сериализация и десериализация формата Json Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |