• Как передать в json двоичное число?

    From Gennadij Pastuhov@2:5036/26 to All on Tue Aug 8 17:07:46 2023
    Рад всех приветствовать! А особенно - All!

    Если написать что-то вроде

    my $f = 4.0;
    my $j = JSON::encode_json({
    object => {
    value => $f,
    }
    });
    print "j: ", $j;

    , то получим:

    j: {"object":{"value":4}}

    , т.е., незначащие нули усеклись. А как их сохранить?

    ... Jonny wanna live
    --- GoldED+/W32 1.1.5-041013 xenofont.chat.ru skype pastuhovgena
    * Origin: Тяжело в лечении - легко в гробу (2:5036/26)
  • From Roman Danilov@2:5020/570.54 to Gennadij Pastuhov on Fri Aug 11 00:27:50 2023
    Привет, Gennadij!

    Ответ на сообщение Gennadij Pastuhov (2:5036/26) к All, написанное 08 авг 23 в 17:07:

    , т.е., незначащие нули усеклись. А как их сохранить?
    я бы посмотрел в сторону или написать свою реализацию JSON (есть на STEPIK вроде в уроках задание, и навскидку помню, что это несложно) либо натравить на результат энкодинга регулярку, добавляющую точку-разделитель, где ее нет, и нули после неё, в нужном количестве.

    С уважением - Roman
    --- GoldED+/W32-MINGW 1.1.5-b20120519 (Kubik 3.0)
    * Origin: Делай всё сам, не грузи ближнего. R2AMO. (2:5020/570.54)
  • From Stas Mishchenkov@2:460/5858 to Gennadij Pastuhov on Mon Aug 14 22:33:44 2023
    Hi Gennadij!

    08 Aug 23 17:07, Gennadij Pastuhov -> All:

    Если написать что-то вроде

    my $f = 4.0;
    my $j = JSON::encode_json({
    object => {
    value => $f,
    }
    });
    print "j: ", $j;

    , то получим:

    j: {"object":{"value":4}}

    , т.е., незначащие нули усеклись. А как их сохранить?

    my $f = '4.0'; Пробовал?

    Have nice nights.
    Stas Mishchenkov.

    --- Всё, что ты хочешь, находится на обратной стороне страха.
    * Origin: Lame Users Breeding. Simferopol, Crimea. (2:460/5858)
  • From Gennadij Pastuhov@2:5036/26 to Stas Mishchenkov on Thu Aug 17 12:52:32 2023
    Рад всех приветствовать! А особенно - Stas!

    Понедельник августа 14 23 22:33 Stas Mishchenkov писал к Gennadij Pastuhov:

    my $f = 4.0;
    my $j = JSON::encode_json({
    object =>> {
    value =>> $f,
    }
    });
    print "j: ", $j;
    , то получим:
    j: {"object":{"value":4}}
    , т.е., незначащие нули усеклись. А как их сохранить?
    my $f = '4.0'; Пробовал?

    Конечно:
    my $f = '4.0';
    my $j = JSON::encode_json({
    object => {
    value => $f,
    }
    });
    print "j: ", $j;

    j: {"object":{"value":"4.0"}}

    ... Jonny wanna live
    --- GoldED+/W32 1.1.5-041013 xenofont.chat.ru skype pastuhovgena
    * Origin: Только единицы знают, что миллионы состоят из нулей. (2:5036/26)
  • From Stas Mishchenkov@2:460/5858 to Gennadij Pastuhov on Sat Aug 19 14:34:14 2023
    Hi Gennadij!

    17 Aug 23 12:52, Gennadij Pastuhov -> Stas Mishchenkov:

    my $f = 4.0;
    my $j = JSON::encode_json({
    object =>> {
    value =>> $f,
    }
    });
    print "j: ", $j;
    , то получим:
    j: {"object":{"value":4}}
    , т.е., незначащие нули усеклись. А как их сохранить?
    my $f = '4.0'; Пробовал?

    Конечно:
    my $f = '4.0';
    my $j = JSON::encode_json({
    object => {
    value => $f,
    }
    });
    print "j: ", $j;

    j: {"object":{"value":"4.0"}}

    Цель достигнута?

    Have nice nights.
    Stas Mishchenkov.

    --- Перестань пытаться сделать каждого счастливым, ты не текила.
    * Origin: Lame Users Breeding. Simferopol, Crimea. (2:460/5858)
  • From Gennadij Pastuhov@2:5036/26 to Stas Mishchenkov on Tue Aug 22 11:38:08 2023
    Рад всех приветствовать! А особенно - Stas!

    Суббота августа 19 23 14:34 Stas Mishchenkov писал к Gennadij Pastuhov:

    j: {"object":{"value":"4.0"}}
    Цель достигнута?

    Пока нет.

    ... Jonny wanna live
    --- GoldED+/W32 1.1.5-041013 xenofont.chat.ru skype pastuhovgena
    * Origin: Тяжело в лечении - легко в гробу (2:5036/26)
  • From Stas Mishchenkov@2:460/5858 to Gennadij Pastuhov on Tue Aug 22 13:42:06 2023
    Hi Gennadij!

    22 Aug 23 11:38, Gennadij Pastuhov -> Stas Mishchenkov:

    j: {"object":{"value":"4.0"}}
    Цель достигнута?

    Пока нет.

    А вчём тогда цель?

    Have nice nights.
    Stas Mishchenkov.

    --- Назначают верных, а требуют как с умных.
    * Origin: Lame Users Breeding. Simferopol, Crimea. (2:460/5858)
  • From Gennadij Pastuhov@2:5036/26 to Stas Mishchenkov on Tue Aug 22 16:14:06 2023
    Рад всех приветствовать! А особенно - Stas!

    Вторник августа 22 23 13:42 Stas Mishchenkov писал к Gennadij Pastuhov:

    j: {"object":{"value":"4.0"}}
    Цель достигнута?
    Пока нет.
    А вчём тогда цель?

    Поместить в json число с десятичной точкой.

    ... Jonny wanna live
    --- GoldED+/W32 1.1.5-041013 xenofont.chat.ru skype pastuhovgena
    * Origin: ... са. Это ориджин Мёбиуса. Это ориджин Мёбиу ... (2:5036/26)
  • From Stas Mishchenkov@2:460/5858 to Gennadij Pastuhov on Wed Aug 23 09:58:20 2023
    Hi Gennadij!

    22 Aug 23 16:14, Gennadij Pastuhov -> Stas Mishchenkov:

    j: {"object":{"value":"4.0"}}
    Цель достигнута?
    Пока нет.
    А вчём тогда цель?

    Поместить в json число с десятичной точкой.

    у, дык, а не поместили разве?

    Have nice nights.
    Stas Mishchenkov.

    --- Самое сложное в безделье - это то, что нельзя остановиться и передохнуть.
    * Origin: Lame Users Breeding. Simferopol, Crimea. (2:460/5858)
  • From Gennadij Pastuhov@2:5036/26 to Stas Mishchenkov on Wed Aug 23 10:11:06 2023
    Рад всех приветствовать! А особенно - Stas!

    Среда августа 23 23 09:58 Stas Mishchenkov писал к Gennadij Pastuhov:

    j: {"object":{"value":"4.0"}}
    Цель достигнута?
    Пока нет.
    А вчём тогда цель?
    Поместить в json число с десятичной точкой.
    у, дык, а не поместили разве?

    ет, в кавычках - строка. Вообще, задача в том, чтобы ходить в апи жиры, а она очень щепетильно к типам относится.

    ... Jonny wanna live
    --- GoldED+/W32 1.1.5-041013 xenofont.chat.ru skype pastuhovgena
    * Origin: Hичего на свете лучше нету, чем сидеть за компом до pасс (2:5036/26)
  • From Alexey Korotkov@2:455/19.1 to Gennadij Pastuhov on Thu Aug 24 02:30:18 2023
    Привет Gennadij!

    08-Авг-2023 17:07, Gennadij Pastuhov -> All:

    Если написать что-то вроде

    my $f = 4.0;
    my $j = JSON::encode_json({

    , т.е., незначащие нули усеклись. А как их сохранить?

    А json здесь причем?
    === Грызем Windows Clipboard отсюда ===
    my $f = 4.0;
    print $f;
    === Хватит. Догрызли Windows Clipboard ===
    Да, тут, похоже, проблема из-за автоматического преобразования.
    КМК, как уже было сказано, собственная реализация/парсер + если в одном месте нужно число с точкой, в другом - без, а в третьем - вообще строка, то нужно будет побольше костылей.


    Alexey
    --- GoldED+/W64-MSVC 1.1.5-b20180707
    * Origin: Путь наверх (2:455/19.1)
  • From Roman Danilov@2:5020/570.54 to Gennadij Pastuhov on Sun Oct 22 02:11:10 2023
    Привет, Gennadij!

    Ответ на сообщение Gennadij Pastuhov (2:5036/26) к All, написанное 08 авг 23 в 17:07:

    , т.е., незначащие нули усеклись. А как их сохранить?

    То, о чем говорил 11 августа: написать свою реализацию энкода json совсем нетрудно.
    Цитирую упражнение с ресурса STEPIK с решением:

    STEPIK.ORG, Введение в Perl

    6.3 Сериализация данных

    Ваша задача реализовать простой сериализатор JSON. т.е. функцию serialize($ref), которая будет возвращать JSON-строку. Вам в помощь реализована функция is_number($sv), которая возвращает истину если в скаляре содержится число.

    Пример :

    $VAR1 = {
    'b' => [
    1,
    '2',
    3
    ],
    'a' => 1,
    'c' => {
    'b' => 2,
    'a' => 1
    }
    };



    serialize($VAR1) == '{"b":[1,"2",3],"a":1,"c":{"b":2,"a":1}}'

    апишите программу. Тестируется через stdin -> stdout

    Мой зачтённый вариант решения был таков (видно, что надо применить немного рекурсии, и всё получится):

    sub serialize {
    my ($value) = @_;
    if (ref($value) eq 'ARRAY')
    {
    my @i_arr = @{$value};
    my @d;
    for (@i_arr)
    {
    push (@d, serialize($_));
    }
    return '['.join(',',@d).']';
    }
    elsif (ref($value) eq 'HASH')
    {
    my %i_slov = %{$value};
    my @c;
    for (keys %i_slov)
    {
    push (@c, '"'.$_.'":'.serialize(${$value}{$_}));
    }
    return '{'.join(',',@c).'}';
    }
    else
    {
    my $i_value=$value;
    if (is_number($i_value))
    {
    return $i_value;
    }
    else
    {
    return '"'.$i_value.'"';
    }
    }
    }

    К сожаленью, протестировать ее в своей среде не могу, т.к. не представляю как сделать свою корректную реализацию функции is_number(). Если обвязку, работающую с незначащими нулями, создать удастся, то засунуть эти изменения в приведенный выше код, как видно, не должно составить большого труда.


    С уважением - Roman
    --- GoldED+/W32-MINGW 1.1.5-b20120519 (Kubik 3.0)
    * Origin: Делай всё сам, не грузи ближнего. R2AMO. (2:5020/570.54)