Zmiana komunikacji z innym modułem systemu wymusiła inne podejście do przetwarzania przesyłanego jsona. No i był problem z wyciągnięciem peselu, gdy obiekt wewnętrzny nie był tabelą:

{
 "client": {
         "id": "3131",
         "pesel": "9999999999"
    },
    "pagination" : {
        "itemPerPage": 20,
        "currentPage": 2
    }
}

A rozwiązanie było naprawdę proste:

  DECLARE
  v_clob  CLOB := '{
    "client": {
         "id": "3131",
         "pesel": "9999999999"
    },
    "pagination" : {
        "itemPerPage": 20,
        "currentPage": 2
    }
    }';
 
  v_j_object    JSON_OBJECT_T;
BEGIN
  v_j_object := JSON_OBJECT_T.parse(v_clob); 
  v_j_object := JSON_OBJECT_T(v_j_object.get('client'));
 
  DBMS_OUTPUT.PUT_LINE(v_j_object.get_string('id'));
  DBMS_OUTPUT.PUT_LINE(v_j_object.get_string('pesel'));
END;