1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/huanghongbo-pljson

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

PL/JSON предоставляет пакеты и API для работы с данными в формате JSON в коде PL/SQL.

Общая информация о JSON доступна по адресу http://www.json.org.

Пример того, что можно делать с PL/JSON

declare
  obj pljson;
  list pljson_list;
begin

  obj := pljson('
    {
      "a": null,
      "b": 12.243,
      "c": 2e-3,
      "d": [true, false, "abdc", [1,2,3]],
      "e": [3, {"e2":3}],
      "f": {
        "f2":true
      }
    }');
  obj.print;
  -- эквивалентно print
  dbms_output.put_line(obj.to_char);

  -- печать компактным способом
  obj.print(false);
  -- эквивалент печати компактным способом
  dbms_output.put_line(obj.to_char(false));

  -- добавить к объекту JSON
  obj.put('g', 'a little string');
  -- удалить из объекта JSON
  obj.remove('g');

  -- подсчёт прямых членов в объекте JSON
  dbms_output.put_line(obj.count);

  -- проверить, существует ли элемент
  if not obj.exist('json is good') then
    obj.put('json is good', 'Yes!');
    if obj.exist('json is good') then
      obj.print;
      dbms_output.put_line(':-)');
    end if;
  end if;

  -- вы можете создавать списки (массивы) тоже
  -- однако обратите внимание, что мы должны использовать функцию 'to_json_value' для объектов JSON
  list := pljson_list(); -- свежий список;
  list.append(pljson('{"lazy construction": true}').to_json_value);
  list.append(pljson_list('[1,2,3,4,5]'));
  list.print;    -- пустые списки и вложенные списки поддерживаются
  list := pljson_list('[1,2,3,[3, []]]');
  list.print;
  -- подсчет прямых членов в списке JSON
  dbms_out.put_line(list.count);

  -- также можно поместить объект JSON или списки JSON как значения
  obj.put('вложенный json', pljson('{"ленивая конструкция": true}'));
  obj.put('массив', pljson_list('[1,2,3,4,5]'));
  obj.print;

  -- поддержка дат
  obj.put('дата', pljson_ext.to_json_value(to_date('2017-10-21', 'ГГГГ-ММ-ДД')));
  -- и преобразовать его обратно
  dbms_output.put_line(pljson_ext.to_date(obj.get('дата')));

  obj := pljson(
    '{
      "a" : true,
      "b" : [1,2,"3"],
      "c" : {
        "d" : [["массив массивов"], null, { "e": 7913 }]
      }
    }');

  -- получить элементы с помощью выражения пути JSON
  -- pljson поддерживает простое выражение точки пути и '[n]' для массивов
  -- оно никогда не вызывает исключения (вместо этого возвращается значение null)
  -- массивы индексируются начиная с 1
  -- пустая строка в качестве пути возвращает весь объект JSON
  -- можно использовать 'get_string', 'get_number' и т. д.
  dbms_output.put_line(pljson_ext.get_number(obj, 'c.d[3].e'));

  -- все объекты pljson_... являются копиями
  -- поэтому модификация на месте затруднена
  -- но put с путём может это сделать
  pljson_ext.put(obj, 'c.d[3].e', 123);
  obj.print;

  -- если вы предоставите недопустимый путь, то будет выдана ошибка
  -- однако вы можете указать путь, который не существует, но должен быть создан
  -- массивы индексируются с 1.
  -- пробелы будут заполнены значениями null
  obj := pljson();
  pljson_ext.put(obj, 'a[2].data.value[1][2].myarray', pljson_list('[1,2,3]'));
  obj.print;  -- заполнить пробелы
  pljson_ext.put(obj, 'a[1]', 'filler1');
  pljson_ext.put(obj, 'a[2].data.value[1][1]', 'filler2');
  obj.print;
  pljson_ext.put(obj, 'a[2].data', 7913);
  obj.print;

  obj := pljson(
    '{
      "a" : true,
      "b" : [1,2,"3"],
      "c" : {
        "d" : [["массив массивов"], null, { "e": 7913 }]
      }
    }');
  obj.print;

  -- удалить элемент
  pljson_ext.remove(obj, 'c.d[3].e');
  obj.print;
  -- удалить массив массивов
  pljson_ext.remove(obj, 'c.d[1]');
  obj.print;
  -- удалить нулевой элемент
  pljson_ext.remove(obj, 'c.d[1]');
  obj.print;

  -- вы можете игнорировать проверку на дубликаты ключей
  obj := pljson();
  -- позволяет быстро строить без проверок на повторяющиеся ключи
  obj.check_duplicate(false);
  for i in 1 .. 10 loop
    obj.put('a'||i, i);
  конец цикла;
  obj.put('a'||5, 'tada');
  obj.print;
  obj.check_duplicate(true);
  -- исправить возможные дубликаты, но не сохраняет порядок
  obj.remove_duplicates();
  obj.print;

  -- создавать объекты JSON и списки из SQL-запросов
  list := pljson_dyn.executeList('select * from tab');
  list.print;
  obj :=

*Примечание: в тексте запроса присутствуют фрагменты кода на языке PL/SQL, которые не были переведены.*

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

PL/JSON is a generic JSON object written in PL/SQL. Using PL/SQL object syntax, users instantiate a JSON object and then add members, arrays and additional JSON objects. This object type can store JSON data, in Oracle, persistently. Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/huanghongbo-pljson.git
git@api.gitlife.ru:oschina-mirror/huanghongbo-pljson.git
oschina-mirror
huanghongbo-pljson
huanghongbo-pljson
master