How to return decimals in the right number format with Oracle JSON_VALUE
You can use TO_NUMBER() without a REPLACE(). For example:

select to_number('12345,67', '9999999999D9999', 'NLS_NUMERIC_CHARACTERS='',.''')
from dual;


TO_NUMBER() documentation.