powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Запись в JSON
16 сообщений из 16, страница 1 из 1
Запись в JSON
    #38613627
Фотография Areostar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здраствуйте. Никак не могу догнать. как мне Дописать сто нибуть в JSON фаил?

или как изменить данные записанные а JSON?
...
Рейтинг: 0 / 0
Запись в JSON
    #38613872
ILLHEAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Areostar,

json_decode > редактирование > json_encode
...
Рейтинг: 0 / 0
Запись в JSON
    #38614077
artas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Areostar,

если большой файл, то эффективнее будет регекспами
...
Рейтинг: 0 / 0
Запись в JSON
    #38614330
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
artas,

нет. шансы на ошибку очень велики. гдето провтыкаешь и испортишь данные.
если не ты, то другой который будет вносить правки.

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

ЗЫ
я например в одном месте делаю внешний вызов на сед для обработки текстового файла - ибо надо плёвые замены сделать в файле по сути архивных данных, и на пхп перечитывать файл выискивая чтото долго, а сед бысро шерстит и делает нужные замены.
...
Рейтинг: 0 / 0
Запись в JSON
    #38614468
st_st
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сегодня коллега ругался, что json_decode косячит приходящие с другого сервера json-данные и цифры превращает в формат с экспонентой по типу 3.18+е16, завтра узнаю чем всё закончилось А я помню его на кириллице (японском, китайском, корейском) глючило и буквы превращало в /u0012 и подобные кракозябры. Потом вроде пофиксили багу в 5.4 и добавили JSON_UNESCAPED_UNICODE.
...
Рейтинг: 0 / 0
Запись в JSON
    #38614512
artas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex564657498765453,

а если гиговый файл ? как предлагаете править ? весь гектар в ОЗУ забивать ?
...
Рейтинг: 0 / 0
Запись в JSON
    #38614515
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
artasalex564657498765453,

а если гиговый файл ? как предлагаете править ? весь гектар в ОЗУ забивать ?
а если десятигиговый?
...
Рейтинг: 0 / 0
Запись в JSON
    #38614570
Фотография SmeL_md
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
artasalex564657498765453,

а если гиговый файл ? как предлагаете править ? весь гектар в ОЗУ забивать ?Тут нужно править того кто допустил такую ересь, и советников тоже :)
...
Рейтинг: 0 / 0
Запись в JSON
    #38616226
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
artas,

а как создавался гиговый файл? :)

ЗЫ
джейсон - формат хранения контейнера, если один джейсон весит гиг, то либо нужно работать с таким контейнером, либо руки не оттуда растут.
...
Рейтинг: 0 / 0
Запись в JSON
    #38616293
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
st_stСегодня коллега ругался, что json_decode косячит приходящие с другого сервера json-данные и цифры превращает в формат с экспонентой по типу 3.18+е16, завтра узнаю чем всё закончилось А я помню его на кириллице (японском, китайском, корейском) глючило и буквы превращало в /u0012 и подобные кракозябры. Потом вроде пофиксили багу в 5.4 и добавили JSON_UNESCAPED_UNICODE.

А нефига флоаты как строку отдавать . По поводу же \uxxxx, это вполне логично. Вот представим, я не знаю в какой кодировке ко мне пришли данные с другого сервера. Как json_decode должен безопасно их обработать? только заменив каждый символ отсутствующий в ASCII на некую последовательность символов которые в ней присутствуют (в данном случае символ заменяется на его номер unicode, потому unicode символов это не касается).

А насчёт флоатов... что-то Ваш коллега тупит ))
Код: php
1.
2.
3.
4.
5.
var_dump(json_decode('{"1.125": 2.4}'));
// object(stdClass)#1 (1) { ["1.125"]=> float(2.4) }

var_dump(json_decode('{"1.125": 2.4}', true));
// array(1) { ["1.125"]=> float(2.4) }



Так что никто ничего не корёжит . Строка остаётся строкой, а число - числом... А уж то, что он не может вывести число в правильном виде - так это его проблемы ))) (и вопрос его квалификации и правильного выбора профессии)
...
Рейтинг: 0 / 0
Запись в JSON
    #38617125
st_st
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПрограмёрА нефига флоаты как строку отдавать . По поводу же \uxxxx, это вполне логично. Вот представим, я не знаю в какой кодировке ко мне пришли данные с другого сервера. Как json_decode должен безопасно их обработать? только заменив каждый символ отсутствующий в ASCII на некую последовательность символов которые в ней присутствуют (в данном случае символ заменяется на его номер unicode, потому unicode символов это не касается).

Строка остаётся строкой, а число - числом... А уж то, что он не может вывести число в правильном виде - так это его проблемы ))) (и вопрос его квалификации и правильного выбора профессии)

\uxxxx - меня эта фигня радует в гугл js-минифаере, при минификации js все русские символы в скрипте превращаются в эту хрень \uxxxx и минифицированный файл в итоге весит больше, чем не минифицированный Приходится на сервере перекодировать эту хрень обратно. Зато данные в кодировке любой можно юзать, а то что трафика дохрена гоняешь, затем обратно конвертишь и пришедший файл весит больше исходного - это фигня, пральна? Я как разработчик прекрасно знаю в какой кодировке у меня сайт и в какой кодировке я получаю/хочу получить данные, то есть мне не нужен никакой выпендрёжь с универсальностью в ущерб производительности.

Касаемо цифр, спросил ща чё он там делал, оказалось всё проще -

Код: html
1.
2.
  $json = '{"number":4524754086356432180}'; // приходит с другого сервера
  print_r(json_decode($json)); // 4.5247540863564E+18 - в таком виде куда-то дальше пишется и там дальше в других местах отваливается
...
Рейтинг: 0 / 0
Запись в JSON
    #38617159
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
st_stКасаемо цифр, спросил ща чё он там делал, оказалось всё проще -

Код: html
1.
2.
  $json = '{"number":4524754086356432180}'; // приходит с другого сервера
  print_r(json_decode($json)); // 4.5247540863564E+18 - в таком виде куда-то дальше пишется и там дальше в других местах отваливается

Есть такая штука, как максимальное значение целого (в контексте типа данных). Оно зависит от разрядности ОС. В этом смысле выше головы не прыгнешь. Есть и алгоритмы преобразования типов, например http://ru2.php.net/manual/ru/language.types.integer.php Переполнение целых чисел

Если PHP обнаружил, что число превышает размер типа integer, он будет интерпретировать его в качестве float. Аналогично, если результат операции лежит за границами типа integer, он будет преобразован в float.
Хотя, в принципе, существует возможность работы с целыми числами произвольной длины .

Еще, JSON по своей сути является текстом, который, в общем то, можно и синтезировать и анализировать при помощи только текстовых функций. В таком контексте целым вполне может считаться непрерывная последователь символов 0...9 между ":" и "}" или как-то так. То есть, при обработке вполне можно обойтись без использования числовых типов данных.
...
Рейтинг: 0 / 0
Запись в JSON
    #38617251
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkleЕсть такая штука, как максимальное значение целого (в контексте типа данных). Оно зависит от разрядности ОС. В этом смысле выше головы не прыгнешь.


яТак что никто ничего не корёжит . Строка остаётся строкой, а число - числом... А уж то, что он не может вывести число в правильном виде - так это его проблемы (и вопрос его квалификации и правильного выбора профессии)

Увидев такое число, я бы первым делом попробовал его вывести напрямую, и посмотрел бы что получится... а не грешил на функцию, обрабатывающую это число.
На 64-битных системах всё работает прекрасно. То есть данные передаются между машинами с разной разрядностью (в принципе это и до меня сказали).
...
Рейтинг: 0 / 0
Запись в JSON
    #38618263
st_st
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkleЕще, JSON по своей сути является текстом, который, в общем то, можно и синтезировать и анализировать при помощи только текстовых функций. В таком контексте целым вполне может считаться непрерывная последователь символов 0...9 между ":" и "}" или как-то так. То есть, при обработке вполне можно обойтись без использования числовых типов данных.

Да, вариант нормальный, осталось подружить json_encode с php 5.2.

JSON_BIGINT_AS_STRING (integer) - Encodes large integers as their original string value. Available since PHP 5.4.0. Оно?
...
Рейтинг: 0 / 0
Запись в JSON
    #38618271
st_st
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПрограмёрНа 64-битных системах всё работает прекрасно. То есть данные передаются между машинами с разной разрядностью (в принципе это и до меня сказали).

Канешь работает, json_encode(4524754086356432180) => 4.5247540863564E+18, если окончания по 5 с конца "...32180" у всех чисел поотрубать, то они равны
...
Рейтинг: 0 / 0
Запись в JSON
    #38618377
Фотография Areostar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
artasalex564657498765453,

а если гиговый файл ? как предлагаете править ? весь гектар в ОЗУ забивать ?


Теестом гиг набрать. Жесть
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Запись в JSON
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]