Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Вопрос про JSON
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Есть JSON-файл. Код: xml 1. 2. 3. 4. Есть код, который десериализирует данные с того файла. C# Код: 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. System.Runtime.Serialization.SerializationException Сообщение = Ошибка десериализации объекта типа System.Collections.Generic.List`1[[Черновик_json4.Number_and_data_array, Черновик json4, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]. Обнаружен непредвиденный символ "i". Скажите, откуда символ i ? Его даже в коде нету. Как правильно написать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2020, 14:27 |
|
||
|
Вопрос про JSON
|
|||
|---|---|---|---|
|
#18+
А где у классов данных конструкторы по умолчанию? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2020, 14:35 |
|
||
|
Вопрос про JSON
|
|||
|---|---|---|---|
|
#18+
судя по коду ошибки, где то есть символ 'i' в json'е, а не в коде. парсер находит символ i и не знает, что с ним делать про конструкторы уже написали, десериализатор должен уметь создавать экземпляр объекта ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2020, 16:09 |
|
||
|
Вопрос про JSON
|
|||
|---|---|---|---|
|
#18+
Shocker.Pro А где у классов данных конструкторы по умолчанию? C# Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2020, 16:44 |
|
||
|
Вопрос про JSON
|
|||
|---|---|---|---|
|
#18+
Roman Mejtes судя по коду ошибки, где то есть символ 'i' в json'е, а не в коде. парсер находит символ i и не знает, что с ним делать про конструкторы уже написали, десериализатор должен уметь создавать экземпляр объекта ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2020, 17:01 |
|
||
|
Вопрос про JSON
|
|||
|---|---|---|---|
|
#18+
ferzmikk Так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2020, 17:03 |
|
||
|
Вопрос про JSON
|
|||
|---|---|---|---|
|
#18+
Вообще-то я не вижу вызова метода Deserialize ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2020, 17:05 |
|
||
|
Вопрос про JSON
|
|||
|---|---|---|---|
|
#18+
Shocker.Pro Вообще-то я не вижу вызова метода Deserialize ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2020, 17:07 |
|
||
|
Вопрос про JSON
|
|||
|---|---|---|---|
|
#18+
Shocker.Pro помогло? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2020, 17:07 |
|
||
|
Вопрос про JSON
|
|||
|---|---|---|---|
|
#18+
а че кавычки одинарные? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2020, 17:56 |
|
||
|
Вопрос про JSON
|
|||
|---|---|---|---|
|
#18+
ï - это 0xEF, 0xEFBBBF это сигнатура UTF8 кодировки, ошибка говорит о том, что Reader' ожидает символ EF в BOM заголовке UTF8 и не находит его, после чего шлёт вас лесом. но структура JSON Всё равно какая то кривая ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2020, 18:30 |
|
||
|
Вопрос про JSON
|
|||
|---|---|---|---|
|
#18+
я зачекал ваш код и практика показала, что в файле json не должно быть BOM, окройте его в notepad и сохраните как UTF-8 (без BOM и будет вам счастье) и надо заменить одинарные кавычки на двойные ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2020, 18:43 |
|
||
|
Вопрос про JSON
|
|||
|---|---|---|---|
|
#18+
Работает даже без конструктора по умолчанию в классе Number_and_data_array . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2020, 19:03 |
|
||
|
Вопрос про JSON
|
|||
|---|---|---|---|
|
#18+
Roman Mejtes но структура JSON Всё равно какая то кривая Я пробую по разному писать JSON, пока остановился на таком варианте. Например, ранее десериализировал для такого простого варианта Код: xml 1. 2. Можно попробовать еще такой вариант. Но не уверен, что это оптимальный вариант. Код: xml 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2020, 19:29 |
|
||
|
Вопрос про JSON
|
|||
|---|---|---|---|
|
#18+
Теперь JSON-файл помещаю в ресурсы, чтобы не выгружать из внешнего файла. Было так: Код: c# 1. 2. 3. Переписал так: Код: c# 1. 2. 3. 4. 5. Теперь при запуске на строке Код: pascal 1. выдает ошибку: System.Runtime.Serialization.SerializationException Сообщение = Ожидается элемент "root" из пространства имен "".. Обнаружен "None" с именем "", пространство имен "". Источник = System.Runtime.Serialization Файл тот же самый, не редактировался. Что тут не так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2020, 20:05 |
|
||
|
Вопрос про JSON
|
|||
|---|---|---|---|
|
#18+
ferzmikk, нормально, это ROOT объект в котором находится список элементов Number_and_data_array ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2020, 21:25 |
|
||
|
Вопрос про JSON
|
|||
|---|---|---|---|
|
#18+
Roman Mejtes это ROOT объект в котором находится список элементов Number_and_data_array Код: c# 1. Так? Но почему, когда при внешнем файле - нормально работает, а с ресурса - не работает? Как правильно написать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2020, 22:22 |
|
||
|
Вопрос про JSON
|
|||
|---|---|---|---|
|
#18+
Resources.jsonfile2.ToString() - вот это, что за бред вообще? в ресурсах у вас файл или путь к файлу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2020, 23:47 |
|
||
|
Вопрос про JSON
|
|||
|---|---|---|---|
|
#18+
тебе не нужен FileStream Resources.jsonfile2 - это уже сам файл ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2020, 00:15 |
|
||
|
Вопрос про JSON
|
|||
|---|---|---|---|
|
#18+
Если так написать, то Visual Studio подчеркивает как ошибку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2020, 00:22 |
|
||
|
Вопрос про JSON
|
|||
|---|---|---|---|
|
#18+
Может стоит вчитаться в текст ошибки и сделать выводы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2020, 00:31 |
|
||
|
Вопрос про JSON
|
|||
|---|---|---|---|
|
#18+
Shocker.Pro Может стоит вчитаться в текст ошибки и сделать выводы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2020, 09:16 |
|
||
|
Вопрос про JSON
|
|||
|---|---|---|---|
|
#18+
Тебе нет. Тебе разрешается только смотреть на типы параметров метода, когда открываешь скобку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2020, 09:30 |
|
||
|
Вопрос про JSON
|
|||
|---|---|---|---|
|
#18+
Пишет такую ошибку: Аргумент 1: не удается преобразовать из "byte[]" в "string". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2020, 09:45 |
|
||
|
Вопрос про JSON
|
|||
|---|---|---|---|
|
#18+
ferzmikk, А теперь давай вместе подумаем, что бы это могло значить. откуда взялся byte[] и в каком месте он пытается преобразоваться в строку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2020, 09:51 |
|
||
|
Вопрос про JSON
|
|||
|---|---|---|---|
|
#18+
Сам JSON-файл это как текстовый документ. Там содержится массив в верхнем уровне данных. В классе FileStream первый аргумент имеет тип String, где задается путь к файлу. Возвращает файл. Byte[] образуется в Properties.Resources.jsonfile2 . И если преобразовывать в строку, то получается что то не логичное. Если где то ошибаюсь, то, пожалуйста, поправьте меня. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2020, 15:23 |
|
||
|
Вопрос про JSON
|
|||
|---|---|---|---|
|
#18+
Ранее вы использовали FileStream, в качестве параметра вы передавали имя файла и тип доступа. Но ресурсы это не файлы. Когда вы обращаетесь к ресурсу напрямую через свойство, вам возвращается массив байт этого ресурса. То есть вы получаете массив байт с содержимым вашего Json файла. Далее есть несколько путей: А) создать MemoryStream, в качестве аргумента он будет принимать массив (буфер), так как оба класса наследуют класс Stream, всё будет работать точно так же, как раньше. То есть заменить строку с FireStream на Код: c# 1. 2. Б) Воспользоваться методом Properties.Resources.ResourceManager.GetStream(nameof(Resources.ResourceName)); Тогда вы получите непосредственно Stream для данного ресурса Код: c# 1. 2. В) использовать Embedded ресурсы, там сразу возвращается Stream и как по мне, они на много удобнее, чем ресурсы из Properties ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2020, 15:44 |
|
||
|
Вопрос про JSON
|
|||
|---|---|---|---|
|
#18+
Roman Mejtes Далее есть несколько путей: А) создать MemoryStream, в качестве аргумента он будет принимать массив (буфер), так как оба класса наследуют класс Stream, всё будет работать точно так же, как раньше. То есть заменить строку с FireStream на Код: c# 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2020, 16:38 |
|
||
|
Вопрос про JSON
|
|||
|---|---|---|---|
|
#18+
Б) Воспользоваться методом Properties.Resources.ResourceManager.GetStream(nameof(Resources.ResourceName)); Тогда вы получите непосредственно Stream для данного ресурса Код: c# 1. 2. Этот вариант не работает. Во время запуска на этой строке пишет: System.InvalidOperationException Сообщение = Данный ресурс не объект класса Stream - вместо него вызовите GetObject. Имя ресурса: "jsonfile2" Источник = mscorlib Написал так Код: c# 1. Потом Visual Studio предлагает так написать Код: c# 1. После этого пишет: Ошибка CS0266 Не удается неявно преобразовать тип "object" в "System.IO.Stream". Существует явное преобразование (возможно, пропущено приведение типов). Пишу так: Код: c# 1. Visual Studio пишет: System.InvalidCastException HResult=0x80004002 Сообщение = Не удалось привести тип объекта "System.Byte[]" к типу "System.IO.Stream" Похоже не в ту сторону корректирую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2020, 16:45 |
|
||
|
Вопрос про JSON
|
|||
|---|---|---|---|
|
#18+
ferzmikk Сообщение = Не удалось привести тип объекта "System.Byte[]" к типу "System.IO.Stream" Как преобразовать массив байт в поток тебе выше написал Роман и даже пример привел. Как ты хочешь сделать прямое приведение byte[] в Stream, ты хотя бы первые несколько глав учебника прочти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2020, 16:56 |
|
||
|
|

start [/forum/topic.php?all=1&fid=20&tid=1398604]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
39ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
65ms |
get tp. blocked users: |
1ms |
| others: | 276ms |
| total: | 420ms |

| 0 / 0 |
