Сериализация жсон или ошибка с бд

Wide

Client
Регистрация
04.02.2013
Сообщения
945
Благодарностей
257
Баллы
63
Парни, мб я что то не так делаю? Возможно причина не в сериализации. Сериализирую жсон кодом:

C#:
string id = project.Variables["vendor_id"].Value;
string name = project.Variables["vendor_name"].Value;
string logo = project.Variables["vendor_logo"].Value;
string description = project.Variables["vendor_description"].Value;
string website = project.Variables["vendor_website"].Value;
string slug = project.Variables["vendor_slug"].Value;

object ob = new{
    id = ""+id+"",
    name = ""+name+"",
    logo = ""+logo+"",
    description = ""+description+"",
    website = ""+website+"",
    slug = ""+slug+""
};
string json = Global.ZennoLab.Json.JsonConvert.SerializeObject(ob);
return json;
Жсон валидный абсолютно

Screenshot_300.png

Импортирую в бд, столбец, тип данных жсон, в итоге ошибку выдаёт. Майскуэль 8.0.30.

Screenshot_299.png
 

n0n3mi1y

Client
Регистрация
08.03.2017
Сообщения
1 237
Благодарностей
573
Баллы
113
Конвертируй строку в Base64, мне только такой вариант помог. JSON бдшка не кушает :(
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 521
Благодарностей
1 319
Баллы
113
Парни, мб я что то не так делаю? Возможно причина не в сериализации. Сериализирую жсон кодом:

C#:
string id = project.Variables["vendor_id"].Value;
string name = project.Variables["vendor_name"].Value;
string logo = project.Variables["vendor_logo"].Value;
string description = project.Variables["vendor_description"].Value;
string website = project.Variables["vendor_website"].Value;
string slug = project.Variables["vendor_slug"].Value;

object ob = new{
    id = ""+id+"",
    name = ""+name+"",
    logo = ""+logo+"",
    description = ""+description+"",
    website = ""+website+"",
    slug = ""+slug+""
};
string json = Global.ZennoLab.Json.JsonConvert.SerializeObject(ob);
return json;
Жсон валидный абсолютно

Посмотреть вложение 96827

Импортирую в бд, столбец, тип данных жсон, в итоге ошибку выдаёт. Майскуэль 8.0.30.

Посмотреть вложение 96828
У вас разве id - string, а не int? А то вы его обернули "" как string.
 

Wide

Client
Регистрация
04.02.2013
Сообщения
945
Благодарностей
257
Баллы
63
при записи в БД экранируются проблемные символы ?
Сериализатор это делает, или мб. я что то не понимаю. Я и через жава прогонял текст, бесполезно. И кастомно экранировал, но так жуткие костыли.
 

Moonwalker

Client
Регистрация
16.03.2016
Сообщения
1 630
Благодарностей
1 225
Баллы
113
Если память не изменяет, то NULL без кавычек ставится. Хз, как в json, но в запросе точно.
 

Wide

Client
Регистрация
04.02.2013
Сообщения
945
Благодарностей
257
Баллы
63

Wide

Client
Регистрация
04.02.2013
Сообщения
945
Благодарностей
257
Баллы
63

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 521
Благодарностей
1 319
Баллы
113

Wide

Client
Регистрация
04.02.2013
Сообщения
945
Благодарностей
257
Баллы
63
Если проблема с текстом, что мешается сделать escape или замену проблемных символов в виде: " ' &?
сериализатор или подготовка жаваскрипт с экранированием справляются. жсон абсолютно валидный. конкретно проблема с импортом а бд. хз в какую сторону копать. задавать правила для замены тоже не вариант, данных очень много, за всеми не уследишь. уверен что проблема решаема без костылей.
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 518
Благодарностей
3 370
Баллы
113
Возможно у вас не та кодировка БД, должна быть UTF-8.
 

Wide

Client
Регистрация
04.02.2013
Сообщения
945
Благодарностей
257
Баллы
63
Возможно у вас не та кодировка БД, должна быть UTF-8.
Таблица по дефолту в утф8. Другие данные в жсон пишутся, но есть проблемные которые мне пока не понятны.

Screenshot_302.png
 

WebBot

Client
Регистрация
04.04.2015
Сообщения
1 763
Благодарностей
1 391
Баллы
113
перед записью нужно сделать escape строки

у меня в классе по работе с mysql этот метод сделан так

C#:
public string escapeString(string s){
    return MySql.Data.MySqlClient.MySqlHelper.EscapeString(s);
}
соответственно перед записью применяю его к строке что бы мускул все проблемные символы заэкранировал сам
 
  • Спасибо
Реакции: Wide

Wide

Client
Регистрация
04.02.2013
Сообщения
945
Благодарностей
257
Баллы
63
Вроде нашел. Не уверен что это верное решение. Заменил все слеши после сериализации на двойные.

Жсон после сериализации:
{
    "description": "Компания Zigmund & Shtain GmbH является современным европейским производственно-торговым холдингом со штаб-квартирой в г. Дюссельдорф, что на западе Германии, и с 2002 года представляет на Российском рынке бытовой техники следующие направления:\n•    Встраиваемая и отдельно стоящая крупногабаритная техника для кухни\n•    Мелкая бытовая техника\n•    Кухонные мойки и смесители\nПользоваться бытовой техникой Zigmund & Shtain комфортно и приятно. Качество, Функциональность и Технологичность – одни из главных достоинств, которым наши разработчики уделяют особое внимание. Высокое качество бытовой техники Zigmund & Shtain полностью соответствует мировым стандартам. Наша Компания первой предложила на территории России и стран СНГ самый длительный срок гарантийного обслуживания на встраиваемую технику – 3+2 года. Гарантия на мелкую бытовую технику составляет 1 год, а на кухонные мойки из инженерного гранита установлен беспрецедентный срок гарантии – 25 лет!"
}
Жсон после замены слешов:
{"description":"Компания Zigmund & Shtain GmbH является современным европейским производственно-торговым холдингом со штаб-квартирой в г. Дюссельдорф, что на западе Германии, и с 2002 года представляет на Российском рынке бытовой техники следующие направления:\\n•\\tВстраиваемая и отдельно стоящая крупногабаритная техника для кухни\\n•\\tМелкая бытовая техника\\n•\\tКухонные мойки и смесители\\nПользоваться бытовой техникой Zigmund & Shtain комфортно и приятно. Качество, Функциональность и Технологичность – одни из главных достоинств, которым наши разработчики уделяют особое внимание. Высокое качество бытовой техники Zigmund & Shtain полностью соответствует мировым стандартам. Наша Компания первой предложила на территории России и стран СНГ самый длительный срок гарантийного обслуживания на встраиваемую технику – 3+2 года. Гарантия на мелкую бытовую технику составляет 1 год, а на кухонные мойки из инженерного гранита установлен беспрецедентный срок гарантии – 25 лет!"}
Тест после обработки жсон:
Компания Zigmund & Shtain GmbH является современным европейским производственно-торговым холдингом со штаб-квартирой в г. Дюссельдорф, что на западе Германии, и с 2002 года представляет на Российском рынке бытовой техники следующие направления:
•    Встраиваемая и отдельно стоящая крупногабаритная техника для кухни
•    Мелкая бытовая техника
•    Кухонные мойки и смесители
Пользоваться бытовой техникой Zigmund & Shtain комфортно и приятно. Качество, Функциональность и Технологичность – одни из главных достоинств, которым наши разработчики уделяют особое внимание. Высокое качество бытовой техники Zigmund & Shtain полностью соответствует мировым стандартам. Наша Компания первой предложила на территории России и стран СНГ самый длительный срок гарантийного обслуживания на встраиваемую технику – 3+2 года. Гарантия на мелкую бытовую технику составляет 1 год, а на кухонные мойки из инженерного гранита установлен беспрецедентный срок гарантии – 25 лет!
Уж не знаю насколько это элегантное решение, но другого я пока не нашел пока. Буду периодически аппать тему. мб кто то и подскажет как будет правильней.
 

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 983
Благодарностей
4 433
Баллы
113

Wide

Client
Регистрация
04.02.2013
Сообщения
945
Благодарностей
257
Баллы
63
перед записью нужно сделать escape строки

у меня в классе по работе с mysql этот метод сделан так

C#:
public string escapeString(string s){
    return MySql.Data.MySqlClient.MySqlHelper.EscapeString(s);
}
соответственно перед записью применяю его к строке что бы мускул все проблемные символы заэкранировал сам
Друг, если не сложно подскажи на моем коде вверху как правильно реализовать. Я с сишарпом не очень.
 

Wide

Client
Регистрация
04.02.2013
Сообщения
945
Благодарностей
257
Баллы
63

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 983
Благодарностей
4 433
Баллы
113
  • Спасибо
Реакции: Wide

Wide

Client
Регистрация
04.02.2013
Сообщения
945
Благодарностей
257
Баллы
63
Друг, если не сложно подскажи на моем коде вверху как правильно реализовать. Я с сишарпом не очень.
Все понял, нужно переделывать запросы на сишарп. Я дефолтным импортирую.
 

WebBot

Client
Регистрация
04.04.2015
Сообщения
1 763
Благодарностей
1 391
Баллы
113

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 518
Благодарностей
3 370
Баллы
113
Вообще, это не сериализация, просто всё в кучу...

Обычно готовится структура и приводится к ней через newtonjson.
 
  • Спасибо
Реакции: Sho

Sho

Активный пользователь
Регистрация
08.08.2022
Сообщения
100
Благодарностей
51
Баллы
28
Парни, мб я что то не так делаю? Возможно причина не в сериализации. Сериализирую жсон кодом:

C#:
string id = project.Variables["vendor_id"].Value;
string name = project.Variables["vendor_name"].Value;
string logo = project.Variables["vendor_logo"].Value;
string description = project.Variables["vendor_description"].Value;
string website = project.Variables["vendor_website"].Value;
string slug = project.Variables["vendor_slug"].Value;

object ob = new{
    id = ""+id+"",
    name = ""+name+"",
    logo = ""+logo+"",
    description = ""+description+"",
    website = ""+website+"",
    slug = ""+slug+""
};
string json = Global.ZennoLab.Json.JsonConvert.SerializeObject(ob);
return json;
Жсон валидный абсолютно

Посмотреть вложение 96827

Импортирую в бд, столбец, тип данных жсон, в итоге ошибку выдаёт. Майскуэль 8.0.30.

Посмотреть вложение 96828
Сериализация жсон или ошибка с бд
Зачем делать такое название темы? Его же фиг найдёшь потом в поиске. Или вы только себе хотите помочь?
 
  • Спасибо
Реакции: Astraport

Wide

Client
Регистрация
04.02.2013
Сообщения
945
Благодарностей
257
Баллы
63
Сериализация жсон или ошибка с бд
Зачем делать такое название темы? Его же фиг найдёшь потом в поиске. Или вы только себе хотите помочь?
Тебе что нужно? Проходи мимо, кому нужно тот найдет. Учитель херов...
 

Sho

Активный пользователь
Регистрация
08.08.2022
Сообщения
100
Благодарностей
51
Баллы
28
Тебе что нужно? Проходи мимо, кому нужно тот найдет. Учитель херов...
Ну и зачем обзываться начал?
Тебе форум помогает, а ты форуму гадишь, как эгоист. А потом ещё и оскорбляешь... Фу таким быть.:an:
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)