Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M Новый топик    Ответить
 Перевод Строки  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 2066
Здравствуйте.

Получаю со стороны Cache' строки которые содержат
знаки "перевода строки" $C(10)
При разборе JSON получаю ошибку:
SyntaxError: JSON.parse: bad control character in string literal at line 1 column 50 of the JSON data
Как это побороть ?

Спасибо.
21 ноя 18, 16:16    [21740313]     Ответить | Цитировать Сообщить модератору
 Re: Перевод Строки  [new]
kalin
Member

Откуда:
Сообщений: 313
Valeriu
Здравствуйте.

Получаю со стороны Cache' строки которые содержат
знаки "перевода строки" $C(10)
При разборе JSON получаю ошибку:
SyntaxError: JSON.parse: bad control character in string literal at line 1 column 50 of the JSON data
Как это побороть ?

Спасибо.

$tr(str,$с(10)) :)

В моих проектах при формировании XML или JSON всегда стоит фильтр на строки, отсекающий ненужные спецсимволы

В противном случае их надо "экранировать" http://qaru.site/questions/48475/how-to-escape-special-characters-in-building-a-json-string
21 ноя 18, 17:21    [21740385]     Ответить | Цитировать Сообщить модератору
 Re: Перевод Строки  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 2066
kalin,

Я так и делаю.
$tr(str,$с(10), на что ?) , эти разрывы строк мне
нужны на стороне JS для сформирования отчета
Без них все получаются в одну длинную строку...
21 ноя 18, 20:41    [21740576]     Ответить | Цитировать Сообщить модератору
 Re: Перевод Строки  [new]
DAiMor
Member

Откуда: Volzhsky -> Moscow -> CZ, Brno -> Moscow
Сообщений: 2709
Valeriu,

$replace(str,$c(10),"\n")
21 ноя 18, 22:57    [21740660]     Ответить | Цитировать Сообщить модератору
 Re: Перевод Строки  [new]
Блок А.Н.
Member

Откуда: Новосибирск
Сообщений: 3808
USER>w $zcvt($c(10),"O","JSON")
\n
22 ноя 18, 00:31    [21740704]     Ответить | Цитировать Сообщить модератору
 Re: Перевод Строки  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 2066
DAiMor,

Да, я так пробовал. Вот что получаю на клиенте:
s n=n+1,in(ip,n)=n_"~"_ann_"~"_parc_"~"_nrbord_"~"_rut_"~"_ora_"~"_$tr($p(cont,"/",1),$c(10),"\n")_"~"_$tr($p(cont,"/",2),$c(10),"\n"

["1","2018-11-01","1","1241","10","10.23","Test1\Test2","      "]["2","2018-11-02","2","2111","4","12.30","Test2\Test\Test3",""]["3","2018-11-03","1","1257","10","15.26","Test4\Test4\Test4\","Ura\Victory"]["4","2018-11-05","3","3749","24","6.23","Test5\Test5\",""]["5","2018-11-07","1","1241","22","12.23","e3e3e3e  "," trtrtrtr    trt "]["6","2018-11-07","3","3755","21","7.55","Notebook caracteristici (1 bucata) :\Dimensiuni ecran 17 inch\Sistem de operare Windows10x64 bit\Dimensiunea RAM DDR4 8Gb\Tip hard disk SSD-256Gb + HDD 1Tb\Tip procesor    Core i5\Keyboard Rus+Eng\WiFi\USB - 4",""]
и т д

s n=n+1,in(ip,n)=n_"~"_ann_"~"_parc_"~"_nrbord_"~"_rut_"~"_ora_"~"_$tr($p(cont,"/",1),$c(10),"")_"~"_$tr($p(cont,"/",2),$c(10),"")

Если убираю просто их ($с(10)) и меняю на "пусто", тогда работает - но в одну длинную строку...
22 ноя 18, 09:12    [21740815]     Ответить | Цитировать Сообщить модератору
 Re: Перевод Строки  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 2066
Блок А.Н.,
Я тестирую на 5.0
22 ноя 18, 09:15    [21740818]     Ответить | Цитировать Сообщить модератору
 Re: Перевод Строки  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 2066
DAiMor,
Прошу прощения, вот масив JSON после замены $c(10) на "\n":
+
автор
[["1","2018-11-02","2","2111","4","12.30","Test2\Test\Test3",""],["2","2018-11-03","1","1257","10","15.26","Test4\Test4\Test4\","Ura\Victory"],["3","2018-11-05","3","3749","24","6.23","Test5\Test5\",""],["4","2018-11-07","1","1241","22","12.23","e3e3e3e "," trtrtrtr trt "],["5","2018-11-07","3","3755","21","7.55","Notebook caracteristici (1 bucata) :\Dimensiuni ecran 17 inch\Sistem de operare Windows10x64 bit\Dimensiunea RAM DDR4 8Gb\Tip hard disk SSD-256Gb + HDD 1Tb\Tip procesor Core i5\Keyboard Rus+Eng\WiFi\USB - 4",""],["6","2018-11-08","2","2108","17","21.23","Notebook caracteristici (1 bucata) :\Dimensiuni ecran 17 inch\Sistem de operare Windows10x64 bit\Dimensiunea RAM DDR4 8Gb\Tip hard disk SSD-256Gb + HDD 1Tb\Tip procesor Core i5\Keyboard Rus+Eng\WiFi\USB - 4","Notebook caracteristici (1 bucata) :\Dimensiuni ecran 17 inch\Sistem de operare Windows10x64 bit\Dimensiunea RAM DDR4 8Gb\Tip hard disk SSD-256Gb + HDD 1Tb\Tip procesor Core i5\Keyboard Rus+Eng\WiFi\USB - 4"],["7","2018-11-09","1","1216","3","15.23","Notebook caracteristici (1 bucata) :\Dimensiuni ecran 17 inch\Sistem de operare Windows10x64 bit\Dimensiunea RAM DDR4 8Gb\Tip hard disk SSD-256Gb + HDD 1Tb\Tip procesor Core i5\Keyboard Rus+Eng\WiFi\USB - 4\\Notebook caracteristici (3 bucati) :\Dimensiuni ecran 15 inci\Sistem de operare Windows10x32 bit\Dimensiunea RAM DDR4 4Gb\Tip hard disk SSD 120Gb + HDD 500 Gb\Tip procesor Core i5\Keyboard Rus+Eng\WiFi\USB - 4","Notebook caracteristici (1 bucata) :\Dimensiuni ecran 17 inch\Sistem de operare Windows10x64 bit\Dimensiunea RAM DDR4 8Gb\Tip hard disk SSD-256Gb + HDD 1Tb\Tip procesor Core i5\Keyboard Rus+Eng\WiFi\USB - 4\\Notebook caracteristici (3 bucati) :\Dimensiuni ecran 15 inci\Sistem de operare Windows10x32 bit\Dimensiunea RAM DDR4 4Gb\Tip hard disk SSD 120Gb + HDD 500 Gb\Tip procesor Core i5\Keyboard Rus+Eng\WiFi\USB - 4"],["8","2018-11-16","1","2089","3","11.15","Untest de incalcare a disciplinei\de munca",""],["9","2018-11-16","2","2113","4","10.23","Incalcare","Masuri luate"]]

Получаю вот это:
SyntaxError: JSON.parse: bad escaped character at line 1 column 50 of the JSON data [Подробнее] funxe.js:287:15
callback http://192.168.1.111:8082/SC/js/funxe.js:287:15
AJAX/_http.onreadystatechange http://192.168.1.111:8082/SC/js/ajax.js:14:13
22 ноя 18, 09:44    [21740843]     Ответить | Цитировать Сообщить модератору
 Re: Перевод Строки  [new]
Alexey Maslov
Member

Откуда: СПб
Сообщений: 1565
Valeriu,

если вы подобным образом:
set strWithoutLF=$tr(strWithLF,$c(10),"\n")
заменяли $c(10) на \n, то результат неудивителен.
22 ноя 18, 11:30    [21740979]     Ответить | Цитировать Сообщить модератору
 Re: Перевод Строки  [new]
DAiMor
Member

Откуда: Volzhsky -> Moscow -> CZ, Brno -> Moscow
Сообщений: 2709
Valeriu,

обратите внимание не $tr ($translate) а $replace
22 ноя 18, 12:16    [21741093]     Ответить | Цитировать Сообщить модератору
 Re: Перевод Строки  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 2066
Alexey Maslov
если вы подобным образом:

set strWithoutLF=$tr(strWithLF,$c(10),"\n")

заменяли $c(10) на \n, то результат неудивителен.

DAiMor
обратите внимание не $tr ($translate) а $replace


У меня Каше 5.0. Я сразу не оговорил, прошу прощения ....
Чем можно заменить $replace ?

Спасибо.
22 ноя 18, 13:14    [21741225]     Ответить | Цитировать Сообщить модератору
 Re: Перевод Строки  [new]
DAiMor
Member

Откуда: Volzhsky -> Moscow -> CZ, Brno -> Moscow
Сообщений: 2709
Valeriu
У меня Каше 5.0.
Охх, 2018 год на дворе, контейнеры, IRIS, машина в космосе летает. А у вас Caché больше 10 лет давности. Придется тогда самому писать функцию через $find, а на GT.M как обходитесь без $replace?
22 ноя 18, 14:51    [21741420]     Ответить | Цитировать Сообщить модератору
 Re: Перевод Строки  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 2066
DAiMor
GT.M как обходитесь без $replace?

$TR Вполне хватало до сих пор...
Будем писать функцию значит. Спасибо
22 ноя 18, 15:08    [21741457]     Ответить | Цитировать Сообщить модератору
 Re: Перевод Строки  [new]
Alexey Maslov
Member

Откуда: СПб
Сообщений: 1565
Valeriu
$TR Вполне хватало до сих пор....
Когда-то на comp.lang.mumps было обсуждение, какая реализация $$replace() на M самая быстрая. ЕМНИП, победила вот эта:
replace(str,from,to) ;
  	new i set i=1
  	for  s i=$find(str,from,i) q:i=0  set $e(str,i-$l(from),i-1)=to,i=i-$l(from)+$l(to)
  	quit str
Если интересует встроенная функция $replace(), которая ожидаемо раз в 10 быстрее, попробуйте написать коллеге Константину, возможно, она уже вошла в его расширенный GT.M 6.3.

Disclaimer: я вам ничего не обещал :)
22 ноя 18, 16:16    [21741618]     Ответить | Цитировать Сообщить модератору
 Re: Перевод Строки  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 2066
Alexey Maslov,

Спасибо, Алексей !
Вроде копался там, но ничего не нашел...
Чудеса..
22 ноя 18, 16:21    [21741627]     Ответить | Цитировать Сообщить модератору
 Re: Перевод Строки  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 2066
Всем большое спасибо за отклики !
Вопрос решился .
Алексей еще раз спасибо !
22 ноя 18, 16:38    [21741660]     Ответить | Цитировать Сообщить модератору
 Re: Перевод Строки  [new]
doublefint
Member

Откуда: Беларусь, Минск
Сообщений: 945
Alexey Maslov
Когда-то на comp.lang.mumps было обсуждение, какая реализация $$replace() на M самая быстрая. ЕМНИП, победила вот эта:
replace(str,from,to) ;
  	new i set i=1
  	for  s i=$find(str,from,i) q:i=0  set $e(str,i-$l(from),i-1)=to,i=i-$l(from)+$l(to)
  	quit str
Было и здесь
23 ноя 18, 10:31    [21742463]     Ответить | Цитировать Сообщить модератору
 Re: Перевод Строки  [new]
Alexey Maslov
Member

Откуда: СПб
Сообщений: 1565
doublefint
Было и здесь
Да, именно здесь и было, и тема проработана довольно глубоко. Как изменился мир за 8 лет: где жара, где фестивали в Юрмале...
23 ноя 18, 11:11    [21742538]     Ответить | Цитировать Сообщить модератору
 Re: Перевод Строки  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 2066
Еще для МСМ было нужно .
Да времени прошло много, а вопрос всплыл
как бы сам по себе, но уже для нового витка в М...
Забывать стал.
25 ноя 18, 11:38    [21744038]     Ответить | Цитировать Сообщить модератору
Все форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M Ответить