forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Болтовня (http://forum.boolean.name/forumdisplay.php?f=25)
-   -   помогите понять синтаксис (http://forum.boolean.name/showthread.php?t=20265)

ant0N 13.04.2016 12:47

помогите понять синтаксис
 
Вложений: 1
есть такой код:
PHP код:

a:1:{
    
i:0;
    
a:13:{
        
s:2:\"id\";
        s:2:\"79\";
        s:4:\"name\";
        s:5:\"А-14\";
        s:3:\"url\";
        s:15:\"rolly/sety/a-14\";
        s:4:\"code\";
        s:4:\"CN79\";
        s:5:\"price\";
        s:3:\"540\";
        s:5:\"count\";
        i:1;
        s:8:\"property\";
        s:0:\"\";
        s:6:\"coupon\";
        N;
        s:8:\"discount\";
        d:0;
        s:8:\"fulPrice\";
        s:3:\"540\";
        s:6:\"weight\";
        s:3:\"580\";
        s:12:\"currency_iso\";
        s:3:\"RUR\";
        s:8:\"discSyst\";
        s:0:\"\";
    }


Это наверное json?
Из этого получается вот это:


не могу понять сей алгоритм

Andvrok 13.04.2016 12:51

Ответ: помогите понять синтаксис
 
Это не JSON однозначно. А так ничего сложного: первый символ — префикс (a для массива, s для строки, i для целочисленного значения, d для хз чего (значения с точкой?)); дальше идут попарно количество элементов (для массива) или символов (для строки) плюс название параметра, и само значение на следующей строке.

В JSON это выглядело бы примерно так:
PHP код:

[{
    
"i":0,
    
"a":[
        
"id":79,
        
"name":"A-14",
        
"url":"rolly/sety/a-14",
        
"code":"CN79",
        
"price":"540",
        
"count":1,
        
"property":"",
        
"coupon":false,
        
"discount":0,
        
"fulPrice":"540",
        
"weight":"580",
        
"currency_iso":"RUR",
        
"discSyst":""
    
]
}] 

Ну и символы экранирования для кавычек, конечно.

impersonalis 13.04.2016 13:11

Ответ: помогите понять синтаксис
 
Цитата:

Сообщение от Andvrok (Сообщение 305478)
i для целочисленного значения, d для хз чего (значения с точкой?))

ну если i-int, то d-double

Andvrok 13.04.2016 13:14

Ответ: помогите понять синтаксис
 
Цитата:

Сообщение от impersonalis (Сообщение 305479)
ну если i-int, то d-double

Тоже так подумал, но меня смутило использования дабла для процентной скидки.

ant0N 13.04.2016 13:45

Ответ: помогите понять синтаксис
 
Andvrok, спасибо!
вот мне интересно зачем было изобретать такой велосипед, нельзя было взять json?

ant0N 13.04.2016 13:55

Ответ: помогите понять синтаксис
 
еще вопрос
Код:

s:68:\"запеченный острый с копченым лососем\";
почему 68?



------------------upd -----------------
а, все понял. кириллица считается за 2, а пробелы по одному

St_AnGer 13.04.2016 14:37

Ответ: помогите понять синтаксис
 
Цитата:

Сообщение от ant0N (Сообщение 305481)
Andvrok, спасибо!
вот мне интересно зачем было изобретать такой велосипед, нельзя было взять json?

Ленивый разраб, который не освоил json (хоть это и невозможно), и которому лень парсить его ручками? Я когда то примерно такую же шнягу писал, что бы проще было парсить строки, не стараясь искать открывающий и закрывающий строку символ (а то вдруг посреди строки встретится, это же ещё морока). Смысл разрабатывать такое был когда-то, но уже давным давно есть JSON.

Andvrok 13.04.2016 15:07

Ответ: помогите понять синтаксис
 
Цитата:

Сообщение от St_AnGer (Сообщение 305485)
парсить его ручками

Ну это вообще пушка, json ручками парсить.

St_AnGer 13.04.2016 15:15

Ответ: помогите понять синтаксис
 
Цитата:

Сообщение от Andvrok (Сообщение 305486)
Ну это вообще пушка, json ручками парсить.

Не поверишь, многие не знаю что за хрень такая JSON и начинают её читать (парсить) именно ручками. Особенно если это начинающий программер или вообще - начинающий сайтописец (обычно у таких и вылазиют вот такие {s:5:"ololo"}, да блин, пока я здесь на форуме не спросил когда-то давно и не получил ответ от Моки о пользе JSON'а - сам изобретал свои форматы передачи данных). Давеча чуть не начал писать свой парсер под C# для юньки, потому что не мог найти нормальный :-D в итоге какой-то нашёл, чем добился резкой экономии времени.

pax 13.04.2016 16:20

Ответ: помогите понять синтаксис
 
А я даже не php программист :)
http://php.net/manual/ru/function.serialize.php
http://php.net/manual/ru/function.unserialize.php

Andvrok 13.04.2016 16:34

Ответ: помогите понять синтаксис
 
Так вот оно что. Пхпхшный говносериалайзер такое делает.

pax 13.04.2016 16:35

Ответ: помогите понять синтаксис
 
Цитата:

Сообщение от Andvrok (Сообщение 305489)
Так вот оно что. Пхпхшный говносериалайзер такое делает.

Ну почему говно? Php вообще как парсер всегда быстро работал, даже переменные со знака $ начинаются для ускорения парсинга. А тут такое же упрощение для ускорения чтения. Единственное - использовать это на клиенте странный выбор. А в остальном две функци для сохранения и чтения своих классов/массивов/переменных/и т.д.

Andvrok 13.04.2016 16:40

Ответ: помогите понять синтаксис
 
Цитата:

Сообщение от pax (Сообщение 305490)
Ну почему говно? Php вообще как парсер всегда быстро работал, даже переменные со знака $ начинаются для ускорения парсинга. А тут такое же упрощение для ускорения чтения. Единственное - использовать это на клиенте странный выбор. А в остальном две функци для сохранения и чтения своих классов/массивов/переменных/и т.д.

В том же пхп есть json_encode и json_decode, при этом это будет удобоваримый, читаемый, совместимый со всем формат.

pax 13.04.2016 16:46

Ответ: помогите понять синтаксис
 
Цитата:

Сообщение от Andvrok (Сообщение 305491)
В том же пхп есть json_encode и json_decode, при этом это будет удобоваримый читаемый совместимый со всем формат.

Ну ты не путай назначения этих форматов. Все таки они выполняют разные задачи. Один предназначен для быстрой сериализации/десериализации объектов своего языка, другой общедоступный, который прочитать не так быстро, чем приведенный формат.

Randomize 13.04.2016 16:51

Ответ: помогите понять синтаксис
 
Сериализуйте/десериализуйте данных на 1мб
Сначала через serialize, unserialize
Потом через json_encode, json_decode
Результатам не удивляемся.


Часовой пояс GMT +4, время: 08:18.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot