Гость
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / считывание json / 25 сообщений из 33, страница 1 из 2
09.12.2020, 14:43
    #40025942
qlewerok
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
считывание json
пытаюсь прочитать json код из текстовой переменной responseString
Код: vbnet
1.
2.
Dim jss As JavaScriptSerializer = New JavaScriptSerializer()
Dim dict As Object = jss.Deserialize(Of Object)(responseString)

при любой попытке как-то достать данные из dict получаю неожиданную ошибку System.InvalidCastException: "Приведение строки "" к типу "Integer" является недопустимым."
подскажите, как обращаться к данным в json в конкретно этом случае?
...
Рейтинг: 0 / 0
09.12.2020, 15:05
    #40025947
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
считывание json
Так тебе не в object надо десериализовать, а в конкретный класс, соответствующий твоему json-у
А иначе тебе зачем вообще десериализация? Используй JToken
...
Рейтинг: 0 / 0
09.12.2020, 15:05
    #40025948
fkthat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
считывание json
qlewerok
Код: vbnet
1.
JavaScriptSerializer


Его уже сто лет как нету. На поминках три баяна порвали.
https://docs.microsoft.com/en-us/dotnet/api/system.web.script.serialization.javascriptserializer?view=netframework-4.8 For .NET Framework 4.7.2 and later versions, use the APIs in the System.Text.Json namespace for serialization and deserialization. For earlier versions of .NET Framework, use Newtonsoft.Json.
...
Рейтинг: 0 / 0
09.12.2020, 15:16
    #40025953
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
считывание json
fkthat
На поминках
тут я и сам что-то проспал. А что сейчас у нас модно для десериализации json-а?
...
Рейтинг: 0 / 0
09.12.2020, 15:24
    #40025957
fkthat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
считывание json
Shocker.Pro
А что сейчас у нас модно

Смузи, самокаты, и System.Text.Json :)
...
Рейтинг: 0 / 0
09.12.2020, 15:29
    #40025960
qlewerok
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
считывание json
fkthatSystem.Text.Jsonу меня такая штука даже не объявляется, какой-то Newtonsoft.Json только
...
Рейтинг: 0 / 0
09.12.2020, 15:40
    #40025966
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
считывание json
fkthat
Смузи, самокаты, и System.Text.Json :)
блин, а я как дурак на моноколесе
...
Рейтинг: 0 / 0
09.12.2020, 15:40
    #40025967
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
считывание json
qlewerok
у меня такая штука даже не объявляется, какой-то Newtonsoft.Json только
ты ж говорил, что у тебя .NET 4.8
...
Рейтинг: 0 / 0
09.12.2020, 15:41
    #40025970
fkthat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
считывание json
qlewerok
Newtonsoft.Json только

Это норм. Значит пиши классы по своей json-схеме и читай им в них, ( Newtonsoft.Json.JsonConvert ), либо разбирай его руками с помощью JToken и прочего
...
Рейтинг: 0 / 0
09.12.2020, 15:45
    #40025974
fkthat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
считывание json
Shocker.Pro
ты ж говорил, что у тебя .NET 4.8

Под него надо пакетом ставить, кажется.
...
Рейтинг: 0 / 0
09.12.2020, 15:48
    #40025983
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
считывание json
qlewerok
у меня такая штука даже не объявляется, какой-то Newtonsoft.Json только


Используйте его.
...
Рейтинг: 0 / 0
09.12.2020, 16:52
    #40026021
fkthat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
считывание json
hVostt
Используйте его.

Нет.
...
Рейтинг: 0 / 0
09.12.2020, 17:50
    #40026054
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
считывание json
fkthat
hVostt
Используйте его.

Нет.


Почему? Newtonsoft гораздо богаче по функционалу, плюс он менее строгий, что лучше подходит для внедрения в уже существующие решения.

System.Text.Json стоит применять на новых .net core проектах и привыкать к его строгости и готовиться пилить гору расширений, которые в Newtonsoft из коробки идут.
...
Рейтинг: 0 / 0
09.12.2020, 18:20
    #40026067
fkthat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
считывание json
hVostt
System.Text.Json стоит применять на новых .net core проектах
Да.

hVostt
привыкать к его строгости
Да.

hVostt
готовиться пилить гору расширений
Зачем? Насколько я слышал, System.Text.Json как раз автор Json.Net и делал (и он, вообще, давно один из ведущих девелоперов в команде ASP .Net Core) и одна из целей как раз и была сделать все это легковеснее, повыпилив все то, что нужно реже чем монголы ванну принимают.
...
Рейтинг: 0 / 0
09.12.2020, 18:51
    #40026080
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
считывание json
fkthat
hVostt
готовиться пилить гору расширений
Зачем? Насколько я слышал, System.Text.Json как раз автор Json.Net и делал (и он, вообще, давно один из ведущих девелоперов в команде ASP .Net Core) и одна из целей как раз и была сделать все это легковеснее, повыпилив все то, что нужно реже чем монголы ванну принимают.


Всё же реальность несколько суровей.
И Newtonsoft использовать зачастую дешевле, при чём существенно, так как либа достаточно быстрая, мощная и отлаженная годами.
...
Рейтинг: 0 / 0
09.12.2020, 19:01
    #40026087
qlewerok
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
считывание json
начал глаз дергаться, как прочитал про создание классов, какие-то библиотеки, установки. всё оказалось проще:
Код: javascript
1.
Dim json As JArray = JArray.Parse(responseString)

а дальше можно перебирать массивы
Код: javascript
1.
For Each obj In json

и обращаться к любому значению по имени
Код: vbnet
1.
matches.SelectToken("id").ToString

в общем, нормальная вещь
...
Рейтинг: 0 / 0
09.12.2020, 19:08
    #40026092
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
считывание json
Ну да, в этом варианте ты избегаешь создания класса под десериализованный объект, особенно когда формат json-а заранее неизвестен.
Фактически - это аналог XDocument/XNode (я вот с System.Text.Json особо не работал пока, интересно, там тоже можно XPath-запросы делать)
...
Рейтинг: 0 / 0
09.12.2020, 19:22
    #40026101
fkthat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
считывание json
hVostt
Newtonsoft использовать зачастую дешевле

Если нужно что-то из его функционала, то, конечно, если не нужен, то нафига.
...
Рейтинг: 0 / 0
09.12.2020, 20:22
    #40026118
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
считывание json
Shocker.Pro
Ну да, в этом варианте ты избегаешь создания класса под десериализованный объект, особенно когда формат json-а заранее неизвестен.
Фактически - это аналог XDocument/XNode (я вот с System.Text.Json особо не работал пока, интересно, там тоже можно XPath-запросы делать)


Нельзя, System.Text.Json -- исключительно для сериализации/десериализации.
...
Рейтинг: 0 / 0
09.12.2020, 20:25
    #40026119
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
считывание json
fkthat
hVostt
Newtonsoft использовать зачастую дешевле

Если нужно что-то из его функционала, то, конечно, если не нужен, то нафига.


Дело не только в функционале, но и обратной совместимости.
Очень много написано с учётом возможностей и работы этой библиотеки, которая, на минуточку, входила в стандартный Boilerplaite от Microsoft и была рекомендуемой.

Собственно System.Text.Json это вовсе не замена Newtonsoft.Json, почитай на гитхабе, они шлют лесом запросы по копированию функционала из него.
...
Рейтинг: 0 / 0
09.12.2020, 20:45
    #40026125
fkthat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
считывание json
hVostt
Очень много написано с учётом возможностей и работы этой библиотеки
Перепишут, куда денутся. У меня тоже когда-то много чего было написано еще под второй фреймворк
hVostt
входила в стандартный Boilerplaite от Microsoft и была рекомендуемой.
Ну так ничего другого тогда не было.
hVostt
они шлют лесом запросы по копированию функционала из него.
Правильно делают. Не нужно нам в нашем чудеснейшем и расцветающем .NET 5 это адово легаси из пещерных времен aspx и asmx
...
Рейтинг: 0 / 0
09.12.2020, 21:04
    #40026127
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
считывание json
fkthat
hVostt
входила в стандартный Boilerplaite от Microsoft и была рекомендуемой.
Ну так ничего другого тогда не было.


Как не было, было ты чего )
...
Рейтинг: 0 / 0
09.12.2020, 21:10
    #40026129
fkthat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
считывание json
hVostt
было

Было всякое убожество типа того, что из сабжа темы. Теперь же есть System.Text.Json. Даже под .NET Framework 4.*. Кстати, твой Свашбакл с Json.Net уже правильно не работает - требует дополнительно расширение ставить
...
Рейтинг: 0 / 0
09.12.2020, 23:20
    #40026170
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
считывание json
fkthat
Кстати, твой Свашбакл с Json.Net уже правильно не работает


Ну так его регать надо на уровне платформы, но я не проверял, мы на System.Text.Json сидим
...
Рейтинг: 0 / 0
09.12.2020, 23:57
    #40026178
fkthat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
считывание json
hVostt
Ну так его регать надо на уровне платформы

Там ему просто специально надо сказать, что сериализация моделей будет делаться ньютонсофтом. Он иначе, например, все свойства моделей в паскаль-кейсе нагенерит, может где-то и еще накосячит, я, понятное дело, детально это не исследовал. Одним вызовом в стартапцс делается. Только пакет еще надо доставить нужный. В доках все описано прямо на первой странице.
Код: c#
1.
services.AddSwaggerGenNewtonsoftSupport();
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / считывание json / 25 сообщений из 33, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]