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

  • Автор темы Автор темы Wide
  • Дата начала Дата начала

Wide

Client
Регистрация
04.02.2013
Сообщения
981
Реакции
265
Баллы
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
 
Парни, мб я что то не так делаю? Возможно причина не в сериализации. Сериализирую жсон кодом:

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.
 
при записи в БД экранируются проблемные символы ?
Сериализатор это делает, или мб. я что то не понимаю. Я и через жава прогонял текст, бесполезно. И кастомно экранировал, но так жуткие костыли.
 
Если память не изменяет, то NULL без кавычек ставится. Хз, как в json, но в запросе точно.
 
Если проблема с текстом, что мешается сделать escape или замену проблемных символов в виде: " ' &?
сериализатор или подготовка жаваскрипт с экранированием справляются. жсон абсолютно валидный. конкретно проблема с импортом а бд. хз в какую сторону копать. задавать правила для замены тоже не вариант, данных очень много, за всеми не уследишь. уверен что проблема решаема без костылей.
 
Возможно у вас не та кодировка БД, должна быть UTF-8.
 
Возможно у вас не та кодировка БД, должна быть UTF-8.
Таблица по дефолту в утф8. Другие данные в жсон пишутся, но есть проблемные которые мне пока не понятны.

Screenshot_302.png
 
перед записью нужно сделать escape строки

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

C#:
Развернуть Свернуть Копировать
public string escapeString(string s){
    return MySql.Data.MySqlClient.MySqlHelper.EscapeString(s);
}

соответственно перед записью применяю его к строке что бы мускул все проблемные символы заэкранировал сам
 
  • Оценить
Реакции: Wide
Вроде нашел. Не уверен что это верное решение. Заменил все слеши после сериализации на двойные.

Жсон после сериализации:
Развернуть Свернуть Копировать
{
    "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 лет!

Уж не знаю насколько это элегантное решение, но другого я пока не нашел пока. Буду периодически аппать тему. мб кто то и подскажет как будет правильней.
 
перед записью нужно сделать escape строки

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

C#:
Развернуть Свернуть Копировать
public string escapeString(string s){
    return MySql.Data.MySqlClient.MySqlHelper.EscapeString(s);
}

соответственно перед записью применяю его к строке что бы мускул все проблемные символы заэкранировал сам
Друг, если не сложно подскажи на моем коде вверху как правильно реализовать. Я с сишарпом не очень.
 
  • Оценить
Реакции: Wide
Друг, если не сложно подскажи на моем коде вверху как правильно реализовать. Я с сишарпом не очень.
Все понял, нужно переделывать запросы на сишарп. Я дефолтным импортирую.
 
Вообще, это не сериализация, просто всё в кучу...

Обычно готовится структура и приводится к ней через newtonjson.
 
  • Оценить
Реакции: Sho
Парни, мб я что то не так делаю? Возможно причина не в сериализации. Сериализирую жсон кодом:

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
Сериализация жсон или ошибка с бд
Зачем делать такое название темы? Его же фиг найдёшь потом в поиске. Или вы только себе хотите помочь?
Тебе что нужно? Проходи мимо, кому нужно тот найдет. Учитель херов...
 
Тебе что нужно? Проходи мимо, кому нужно тот найдет. Учитель херов...
Ну и зачем обзываться начал?
Тебе форум помогает, а ты форуму гадишь, как эгоист. А потом ещё и оскорбляешь... Фу таким быть.:an:
 

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