The json_file
is the main public class that is
used to open a file and get data from it.
A json_file
contains only two items: an instance of a json_core,
which is used for all data manipulation, and a json_value pointer,
which is used to construct the linked-list data structure.
Note that most methods in the json_file
class are simply wrappers
to the lower-level routines in the json_value_module.
program test
use json_module
implicit none
type(json_file) :: json
integer :: ival
real(real64) :: rval
character(len=:),allocatable :: cval
logical :: found
call json%initialize(compact_reals=.true.)
call json%load(filename='myfile.json')
call json%print() !print to the console
call json%get('var.i',ival,found)
call json%get('var.r(3)',rval,found)
call json%get('var.c',cval,found)
call json%destroy()
end program test
Note
The destroy()
method may be called to free the memory if necessary.
json_file includes a finalizer that also calls
destroy()
when the variable goes out of scope.
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
type(json_core), | private | :: | core |
The instance of the json_core factory used for this file. |
|||
type(json_value), | private, | pointer | :: | p | => | null() |
the JSON structure read from the file |
Structure constructor to initialize a json_file object with an existing json_value object or a JSON string, and either the json_core settings or a json_core instance.
...
type(json_file) :: my_file
type(json_value),pointer :: json_object
type(json_core) :: json_core_object
...
! Construct a json_object:
!could do this:
my_file = json_file(json_object)
!or:
my_file = json_file(json_object,verbose=.true.)
!or:
my_file = json_file('{"x": [1]}',verbose=.true.)
!or:
my_file = json_file(json_object,json_core_object)
!or:
my_file = json_file('{"x": [1]}',json_core_object)
Cast a json_value object as a json_file object.
It also calls the initialize()
method.
Note
initialize_json_core, json_initialize, initialize_json_core_in_file, initialize_json_file, initialize_json_file_v2, initialize_json_file_from_string, and initialize_json_file_from_string_v2 all have a similar interface.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(json_value), | optional, | pointer | :: | p |
|
|
logical(kind=LK), | intent(in), | optional | :: | verbose |
mainly useful for debugging (default is false) |
|
logical(kind=LK), | intent(in), | optional | :: | compact_reals |
to compact the real number strings for output (default is true) |
|
logical(kind=LK), | intent(in), | optional | :: | print_signs |
always print numeric sign (default is false) |
|
character(kind=CDK, len=*), | intent(in), | optional | :: | real_format |
Real number format: ‘E’ [default], ‘*’, ‘G’, ‘EN’, or ‘ES’ |
|
integer(kind=IK), | intent(in), | optional | :: | spaces_per_tab |
number of spaces per tab for indenting (default is 2) |
|
logical(kind=LK), | intent(in), | optional | :: | strict_type_checking |
if true, no integer, double, or logical type
conversions are done for the |
|
logical(kind=LK), | intent(in), | optional | :: | trailing_spaces_significant |
for name and path comparisons, is trailing space to be considered significant. (default is false) |
|
logical(kind=LK), | intent(in), | optional | :: | case_sensitive_keys |
for name and path comparisons, are they case sensitive. (default is true) |
|
logical(kind=LK), | intent(in), | optional | :: | no_whitespace |
if true, printing the JSON structure is done without adding any non-significant spaces or linebreaks (default is false) |
|
logical(kind=LK), | intent(in), | optional | :: | unescape_strings |
If false, then the raw escaped string is returned from json_get_string and similar routines. If true [default], then the string is returned unescaped. |
|
character(kind=CK, len=*), | intent(in), | optional | :: | comment_char |
If present, these characters are used
to denote comments in the JSON file,
which will be ignored if present.
Example: |
|
integer(kind=IK), | intent(in), | optional | :: | path_mode |
How the path strings are interpreted in the
|
|
character(kind=CK, len=1), | intent(in), | optional | :: | path_separator |
The |
|
logical(kind=LK), | intent(in), | optional | :: | compress_vectors |
If true, then arrays of integers,
nulls, doubles, and logicals are
printed all on one line.
[Note: |
|
logical(kind=LK), | intent(in), | optional | :: | allow_duplicate_keys |
|
|
logical(kind=LK), | intent(in), | optional | :: | escape_solidus |
Note that this option does not affect parsing (both escaped and unescaped are still valid in all cases). |
|
logical(kind=LK), | intent(in), | optional | :: | stop_on_error |
If an exception is raised, then immediately quit. (Default is False). |
|
integer(kind=IK), | intent(in), | optional | :: | null_to_real_mode |
if |
|
integer(kind=IK), | intent(in), | optional | :: | non_normal_mode |
How to serialize NaN, Infinity, and -Infinity real values: |
|
logical(kind=LK), | intent(in), | optional | :: | use_quiet_nan |
|
|
logical(kind=LK), | intent(in), | optional | :: | strict_integer_type_checking |
(default is true) |
|
logical(kind=LK), | intent(in), | optional | :: | allow_trailing_comma |
Allow a single trailing comma in arrays and objects. (default is true) |
|
logical(kind=LK), | intent(in), | optional | :: | nullify_pointer |
if True, then |
Cast a json_value pointer and a json_core object as a json_file object.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(json_value), | intent(in), | pointer | :: | json_value_object | ||
type(json_core), | intent(in) | :: | json_core_object |
Cast a JSON string as a json_file object.
It also calls the initialize()
method.
type(json_file) :: f
f = json_file('{"key ": 1}', trailing_spaces_significant=.true.)
Note
initialize_json_core, json_initialize, initialize_json_core_in_file, initialize_json_file, initialize_json_file_v2, initialize_json_file_from_string, and initialize_json_file_from_string_v2 all have a similar interface.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(kind=CK, len=*), | intent(in) | :: | str |
string to load JSON data from |
||
logical(kind=LK), | intent(in), | optional | :: | verbose |
mainly useful for debugging (default is false) |
|
logical(kind=LK), | intent(in), | optional | :: | compact_reals |
to compact the real number strings for output (default is true) |
|
logical(kind=LK), | intent(in), | optional | :: | print_signs |
always print numeric sign (default is false) |
|
character(kind=CDK, len=*), | intent(in), | optional | :: | real_format |
Real number format: ‘E’ [default], ‘*’, ‘G’, ‘EN’, or ‘ES’ |
|
integer(kind=IK), | intent(in), | optional | :: | spaces_per_tab |
number of spaces per tab for indenting (default is 2) |
|
logical(kind=LK), | intent(in), | optional | :: | strict_type_checking |
if true, no integer, double, or logical type
conversions are done for the |
|
logical(kind=LK), | intent(in), | optional | :: | trailing_spaces_significant |
for name and path comparisons, is trailing space to be considered significant. (default is false) |
|
logical(kind=LK), | intent(in), | optional | :: | case_sensitive_keys |
for name and path comparisons, are they case sensitive. (default is true) |
|
logical(kind=LK), | intent(in), | optional | :: | no_whitespace |
if true, printing the JSON structure is done without adding any non-significant spaces or linebreaks (default is false) |
|
logical(kind=LK), | intent(in), | optional | :: | unescape_strings |
If false, then the raw escaped string is returned from json_get_string and similar routines. If true [default], then the string is returned unescaped. |
|
character(kind=CK, len=*), | intent(in), | optional | :: | comment_char |
If present, these characters are used
to denote comments in the JSON file,
which will be ignored if present.
Example: |
|
integer(kind=IK), | intent(in), | optional | :: | path_mode |
How the path strings are interpreted in the
|
|
character(kind=CK, len=1), | intent(in), | optional | :: | path_separator |
The |
|
logical(kind=LK), | intent(in), | optional | :: | compress_vectors |
If true, then arrays of integers,
nulls, doubles, and logicals are
printed all on one line.
[Note: |
|
logical(kind=LK), | intent(in), | optional | :: | allow_duplicate_keys |
|
|
logical(kind=LK), | intent(in), | optional | :: | escape_solidus |
Note that this option does not affect parsing (both escaped and unescaped are still valid in all cases). |
|
logical(kind=LK), | intent(in), | optional | :: | stop_on_error |
If an exception is raised, then immediately quit. (Default is False). |
|
integer(kind=IK), | intent(in), | optional | :: | null_to_real_mode |
if |
|
integer(kind=IK), | intent(in), | optional | :: | non_normal_mode |
How to serialize NaN, Infinity, and -Infinity real values: |
|
logical(kind=LK), | intent(in), | optional | :: | use_quiet_nan |
|
|
logical(kind=LK), | intent(in), | optional | :: | strict_integer_type_checking |
(default is true) |
|
logical(kind=LK), | intent(in), | optional | :: | allow_trailing_comma |
Allow a single trailing comma in arrays and objects. (default is true) |
Cast a JSON string and a json_core object as a json_file object.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(kind=CK, len=*), | intent(in) | :: | str |
string to load JSON data from |
||
type(json_core), | intent(in) | :: | json_core_object |
Finalizer for json_file class.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(json_file), | intent(inout) | :: | me |
Add a variable to a json_file, by specifying the path.
program test
use json_module, rk=>json_rk, ik=>json_ik
implicit none
type(json_file) :: f
call f%initialize() ! specify whatever init options you want.
call f%add('inputs.t', 0.0_rk)
call f%add('inputs.x', [1.0_rk,2.0_rk,3.0_rk])
call f%add('inputs.flag', .true.)
call f%print() ! print to the console
end program test
Add a json_value pointer as the root object to a JSON file.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
type(json_value), | intent(in), | pointer | :: | p |
pointer to the variable to add |
|
logical(kind=LK), | intent(in), | optional | :: | destroy_original |
if the file currently contains an associated pointer, it is destroyed. [Default is True] |
Add a json_value pointer to an object to a JSON file.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path |
the path to the variable |
||
type(json_value), | intent(in), | pointer | :: | p |
pointer to the variable to add |
|
logical(kind=LK), | intent(out), | optional | :: | found |
if the variable was found |
|
logical(kind=LK), | intent(out), | optional | :: | was_created |
if the variable had to be created |
Add an integer value to a JSON file.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path |
the path to the variable |
||
integer(kind=IK), | intent(in) | :: | val |
value |
||
logical(kind=LK), | intent(out), | optional | :: | found |
if the variable was found |
|
logical(kind=LK), | intent(out), | optional | :: | was_created |
if the variable had to be created |
Alternate version of json_file_add_real where val
is real32
.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path |
the path to the variable |
||
real(kind=real32), | intent(in) | :: | val |
value |
||
logical(kind=LK), | intent(out), | optional | :: | found |
if the variable was found |
|
logical(kind=LK), | intent(out), | optional | :: | was_created |
if the variable had to be created |
Add a real(RK) variable value to a JSON file.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path |
the path to the variable |
||
real(kind=RK), | intent(in) | :: | val |
value |
||
logical(kind=LK), | intent(out), | optional | :: | found |
if the variable was found |
|
logical(kind=LK), | intent(out), | optional | :: | was_created |
if the variable had to be created |
Add a logical(LK) value to a JSON file.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path |
the path to the variable |
||
logical(kind=LK), | intent(in) | :: | val |
value |
||
logical(kind=LK), | intent(out), | optional | :: | found |
if the variable was found |
|
logical(kind=LK), | intent(out), | optional | :: | was_created |
if the variable had to be created |
Add a character string to a json file.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path |
the path to the variable |
||
character(kind=CK, len=*), | intent(in) | :: | val |
value |
||
logical(kind=LK), | intent(out), | optional | :: | found |
if the variable was found |
|
logical(kind=LK), | intent(out), | optional | :: | was_created |
if the variable had to be created |
|
logical(kind=LK), | intent(in), | optional | :: | trim_str |
if TRIM() should be called for the |
|
logical(kind=LK), | intent(in), | optional | :: | adjustl_str |
if ADJUSTL() should be called for the |
Add an integer vector to a JSON file.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path |
the path to the variable |
||
integer(kind=IK), | intent(in), | dimension(:) | :: | vec |
the value vector |
|
logical(kind=LK), | intent(out), | optional | :: | found |
if the variable was found |
|
logical(kind=LK), | intent(out), | optional | :: | was_created |
if the variable had to be created |
Alternate version of json_file_add_real_vec where vec
is real32
.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path |
the path to the variable |
||
real(kind=real32), | intent(in), | dimension(:) | :: | vec |
the value vector |
|
logical(kind=LK), | intent(out), | optional | :: | found |
if the variable was found |
|
logical(kind=LK), | intent(out), | optional | :: | was_created |
if the variable had to be created |
Add a real(RK) vector to a JSON file.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path |
the path to the variable |
||
real(kind=RK), | intent(in), | dimension(:) | :: | vec |
the value vector |
|
logical(kind=LK), | intent(out), | optional | :: | found |
if the variable was found |
|
logical(kind=LK), | intent(out), | optional | :: | was_created |
if the variable had to be created |
Add a logical(LK) vector to a JSON file.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path |
the path to the variable |
||
logical(kind=LK), | intent(in), | dimension(:) | :: | vec |
the value vector |
|
logical(kind=LK), | intent(out), | optional | :: | found |
if the variable was found |
|
logical(kind=LK), | intent(out), | optional | :: | was_created |
if the variable had to be created |
Add a string vector to a JSON file.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path |
the path to the variable |
||
character(kind=CK, len=*), | intent(in), | dimension(:) | :: | vec |
the value vector |
|
logical(kind=LK), | intent(out), | optional | :: | found |
if the variable was found |
|
logical(kind=LK), | intent(out), | optional | :: | was_created |
if the variable had to be created |
|
integer(kind=IK), | intent(in), | optional, | dimension(:) | :: | ilen |
the string lengths of each
element in |
logical(kind=LK), | intent(in), | optional | :: | trim_str |
if TRIM() should be called for each element |
|
logical(kind=LK), | intent(in), | optional | :: | adjustl_str |
if ADJUSTL() should be called for each element (note that ADJUSTL is done before TRIM) |
Assignment operator for json_core = json_core. This will duplicate the json_core and also perform a deep copy of the json_value data structure.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(out) | :: | me | |||
type(json_file), | intent(in) | :: | f |
Assignment operator for character = json_core. This is just a wrapper for the json_value_to_string routine.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(kind=CK, len=:), | intent(out), | allocatable | :: | str | ||
class(json_file), | intent(in) | :: | me |
Assignment operator for json_core = character. This is just a wrapper for the json_file_load_from_string routine.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | str |
Assignment operator for json_core = json_core. This will duplicate the json_core and also perform a deep copy of the json_value data structure.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(out) | :: | me | |||
type(json_file), | intent(in) | :: | f |
Assignment operator for character = json_core. This is just a wrapper for the json_value_to_string routine.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(kind=CK, len=:), | intent(out), | allocatable | :: | str | ||
class(json_file), | intent(in) | :: | me |
Assignment operator for json_core = character. This is just a wrapper for the json_file_load_from_string routine.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | str |
Retrieve error status and message from the class.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
logical(kind=LK), | intent(out), | optional | :: | status_ok |
true if there were no errors |
|
character(kind=CK, len=:), | intent(out), | optional, | allocatable | :: | error_msg |
the error message (if there were errors) |
Clear exceptions in the class.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me |
Load JSON from a string.
Load the JSON data from a string.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | str |
string to load JSON data from |
||
logical(kind=LK), | intent(in), | optional | :: | destroy_pointer |
destroy the pointer before loading (default is True) |
Destroy the json_value data in a json_file. This may be done when the variable is no longer needed, or will be reused to open a different file. Otherwise a memory leak will occur.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
logical, | intent(in), | optional | :: | destroy_core |
to also destroy the json_core. default is to leave it as is. |
Check error status in the file.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(in) | :: | me |
will be true if there has been an error.
Get a variable from a json_file, by specifying the path.
Get a json_value pointer to an object from a JSON file.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path |
the path to the variable |
||
type(json_value), | intent(out), | pointer | :: | p |
pointer to the variable |
|
logical(kind=LK), | intent(out), | optional | :: | found |
if it was really found |
Get an integer value from a JSON file.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path |
the path to the variable |
||
integer(kind=IK), | intent(out) | :: | val |
value |
||
logical(kind=LK), | intent(out), | optional | :: | found |
if it was really found |
|
integer(kind=IK), | intent(in), | optional | :: | default |
Alternate version of json_file_get_real where val
is real32
.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path |
the path to the variable |
||
real(kind=real32), | intent(out) | :: | val |
value |
||
logical(kind=LK), | intent(out), | optional | :: | found |
if it was really found |
|
real(kind=real32), | intent(in), | optional | :: | default |
Get a real(RK) variable value from a JSON file.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path |
the path to the variable |
||
real(kind=RK), | intent(out) | :: | val |
value |
||
logical(kind=LK), | intent(out), | optional | :: | found |
if it was really found |
|
real(kind=RK), | intent(in), | optional | :: | default |
Get a logical(LK) value from a JSON file.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path |
the path to the variable |
||
logical(kind=LK), | intent(out) | :: | val |
value |
||
logical(kind=LK), | intent(out), | optional | :: | found |
if it was really found |
|
logical(kind=LK), | intent(in), | optional | :: | default |
Get a character string from a json file. The output val is an allocatable character string.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path |
the path to the variable |
||
character(kind=CK, len=:), | intent(out), | allocatable | :: | val |
value |
|
logical(kind=LK), | intent(out), | optional | :: | found |
if it was really found |
|
character(kind=CK, len=*), | intent(in), | optional | :: | default |
Get an integer vector from a JSON file.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path |
the path to the variable |
||
integer(kind=IK), | intent(out), | dimension(:), allocatable | :: | vec |
the value vector |
|
logical(kind=LK), | intent(out), | optional | :: | found |
if it was really found |
|
integer(kind=IK), | intent(in), | optional, | dimension(:) | :: | default |
Alternate version of json_file_get_real_vec where vec
is real32
.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path |
the path to the variable |
||
real(kind=real32), | intent(out), | dimension(:), allocatable | :: | vec |
the value vector |
|
logical(kind=LK), | intent(out), | optional | :: | found |
if it was really found |
|
real(kind=real32), | intent(in), | optional, | dimension(:) | :: | default |
Get a real(RK) vector from a JSON file.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path |
the path to the variable |
||
real(kind=RK), | intent(out), | dimension(:), allocatable | :: | vec |
the value vector |
|
logical(kind=LK), | intent(out), | optional | :: | found |
if it was really found |
|
real(kind=RK), | intent(in), | optional, | dimension(:) | :: | default |
Get a logical(LK) vector from a JSON file.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path |
the path to the variable |
||
logical(kind=LK), | intent(out), | dimension(:), allocatable | :: | vec |
the value vector |
|
logical(kind=LK), | intent(out), | optional | :: | found |
if it was really found |
|
logical(kind=LK), | intent(in), | optional, | dimension(:) | :: | default |
Get a string vector from a JSON file.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path |
the path to the variable |
||
character(kind=CK, len=*), | intent(out), | dimension(:), allocatable | :: | vec |
value vector |
|
logical(kind=LK), | intent(out), | optional | :: | found |
if it was really found |
|
character(kind=CK, len=*), | intent(in), | optional, | dimension(:) | :: | default |
Get an (allocatable length) string vector from a JSON file. This is just a wrapper for json_get_alloc_string_vec_by_path.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path |
the path to the variable |
||
character(kind=CK, len=:), | intent(out), | dimension(:), allocatable | :: | vec |
value vector |
|
integer(kind=IK), | intent(out), | dimension(:), allocatable | :: | ilen |
the actual length of each character string in the array |
|
logical(kind=LK), | intent(out), | optional | :: | found | ||
character(kind=CK, len=*), | intent(in), | optional, | dimension(:) | :: | default | |
integer(kind=IK), | intent(in), | optional, | dimension(:) | :: | default_ilen |
the actual
length of |
Get a json_value pointer to the JSON file root.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
type(json_value), | intent(out), | pointer | :: | p |
pointer to the variable |
Get a copy of the json_core in this json_file.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(in) | :: | me | |||
type(json_core), | intent(out) | :: | core |
Returns information about a variable in a json_file.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path |
path to the variable |
||
logical(kind=LK), | intent(out), | optional | :: | found |
the variable exists in the structure |
|
integer(kind=IK), | intent(out), | optional | :: | var_type |
variable type |
|
integer(kind=IK), | intent(out), | optional | :: | n_children |
number of children |
|
character(kind=CK, len=:), | intent(out), | optional, | allocatable | :: | name |
variable name |
Initialize the json_core for this json_file. This is just a wrapper for json_initialize.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
logical(kind=LK), | intent(in), | optional | :: | verbose |
mainly useful for debugging (default is false) |
|
logical(kind=LK), | intent(in), | optional | :: | compact_reals |
to compact the real number strings for output (default is true) |
|
logical(kind=LK), | intent(in), | optional | :: | print_signs |
always print numeric sign (default is false) |
|
character(kind=CDK, len=*), | intent(in), | optional | :: | real_format |
Real number format: ‘E’ [default], ‘*’, ‘G’, ‘EN’, or ‘ES’ |
|
integer(kind=IK), | intent(in), | optional | :: | spaces_per_tab |
number of spaces per tab for indenting (default is 2) |
|
logical(kind=LK), | intent(in), | optional | :: | strict_type_checking |
if true, no integer, double, or logical type
conversions are done for the |
|
logical(kind=LK), | intent(in), | optional | :: | trailing_spaces_significant |
for name and path comparisons, is trailing space to be considered significant. (default is false) |
|
logical(kind=LK), | intent(in), | optional | :: | case_sensitive_keys |
for name and path comparisons, are they case sensitive. (default is true) |
|
logical(kind=LK), | intent(in), | optional | :: | no_whitespace |
if true, printing the JSON structure is done without adding any non-significant spaces or linebreaks (default is false) |
|
logical(kind=LK), | intent(in), | optional | :: | unescape_strings |
If false, then the raw escaped string is returned from json_get_string and similar routines. If true [default], then the string is returned unescaped. |
|
character(kind=CK, len=*), | intent(in), | optional | :: | comment_char |
If present, these characters are used
to denote comments in the JSON file,
which will be ignored if present.
Example: |
|
integer(kind=IK), | intent(in), | optional | :: | path_mode |
How the path strings are interpreted in the
|
|
character(kind=CK, len=1), | intent(in), | optional | :: | path_separator |
The |
|
logical(kind=LK), | intent(in), | optional | :: | compress_vectors |
If true, then arrays of integers,
nulls, doubles, and logicals are
printed all on one line.
[Note: |
|
logical(kind=LK), | intent(in), | optional | :: | allow_duplicate_keys |
|
|
logical(kind=LK), | intent(in), | optional | :: | escape_solidus |
Note that this option does not affect parsing (both escaped and unescaped are still valid in all cases). |
|
logical(kind=LK), | intent(in), | optional | :: | stop_on_error |
If an exception is raised, then immediately quit. (Default is False). |
|
integer(kind=IK), | intent(in), | optional | :: | null_to_real_mode |
if |
|
integer(kind=IK), | intent(in), | optional | :: | non_normal_mode |
How to serialize NaN, Infinity, and -Infinity real values: |
|
logical(kind=LK), | intent(in), | optional | :: | use_quiet_nan |
|
|
logical(kind=LK), | intent(in), | optional | :: | strict_integer_type_checking |
(default is true) |
|
logical(kind=LK), | intent(in), | optional | :: | allow_trailing_comma |
Allow a single trailing comma in arrays and objects. (default is true) |
Set the json_core for this json_file.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
type(json_core), | intent(in) | :: | core |
Initialize the json_core for this json_file. This is just a wrapper for json_initialize.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
logical(kind=LK), | intent(in), | optional | :: | verbose |
mainly useful for debugging (default is false) |
|
logical(kind=LK), | intent(in), | optional | :: | compact_reals |
to compact the real number strings for output (default is true) |
|
logical(kind=LK), | intent(in), | optional | :: | print_signs |
always print numeric sign (default is false) |
|
character(kind=CDK, len=*), | intent(in), | optional | :: | real_format |
Real number format: ‘E’ [default], ‘*’, ‘G’, ‘EN’, or ‘ES’ |
|
integer(kind=IK), | intent(in), | optional | :: | spaces_per_tab |
number of spaces per tab for indenting (default is 2) |
|
logical(kind=LK), | intent(in), | optional | :: | strict_type_checking |
if true, no integer, double, or logical type
conversions are done for the |
|
logical(kind=LK), | intent(in), | optional | :: | trailing_spaces_significant |
for name and path comparisons, is trailing space to be considered significant. (default is false) |
|
logical(kind=LK), | intent(in), | optional | :: | case_sensitive_keys |
for name and path comparisons, are they case sensitive. (default is true) |
|
logical(kind=LK), | intent(in), | optional | :: | no_whitespace |
if true, printing the JSON structure is done without adding any non-significant spaces or linebreaks (default is false) |
|
logical(kind=LK), | intent(in), | optional | :: | unescape_strings |
If false, then the raw escaped string is returned from json_get_string and similar routines. If true [default], then the string is returned unescaped. |
|
character(kind=CK, len=*), | intent(in), | optional | :: | comment_char |
If present, these characters are used
to denote comments in the JSON file,
which will be ignored if present.
Example: |
|
integer(kind=IK), | intent(in), | optional | :: | path_mode |
How the path strings are interpreted in the
|
|
character(kind=CK, len=1), | intent(in), | optional | :: | path_separator |
The |
|
logical(kind=LK), | intent(in), | optional | :: | compress_vectors |
If true, then arrays of integers,
nulls, doubles, and logicals are
printed all on one line.
[Note: |
|
logical(kind=LK), | intent(in), | optional | :: | allow_duplicate_keys |
|
|
logical(kind=LK), | intent(in), | optional | :: | escape_solidus |
Note that this option does not affect parsing (both escaped and unescaped are still valid in all cases). |
|
logical(kind=LK), | intent(in), | optional | :: | stop_on_error |
If an exception is raised, then immediately quit. (Default is False). |
|
integer(kind=IK), | intent(in), | optional | :: | null_to_real_mode |
if |
|
integer(kind=IK), | intent(in), | optional | :: | non_normal_mode |
How to serialize NaN, Infinity, and -Infinity real values: |
|
logical(kind=LK), | intent(in), | optional | :: | use_quiet_nan |
|
|
logical(kind=LK), | intent(in), | optional | :: | strict_integer_type_checking |
(default is true) |
|
logical(kind=LK), | intent(in), | optional | :: | allow_trailing_comma |
Allow a single trailing comma in arrays and objects. (default is true) |
Add a json_value pointer as the root object to a JSON file.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
type(json_value), | intent(in), | pointer | :: | p |
pointer to the variable to add |
|
logical(kind=LK), | intent(in), | optional | :: | destroy_original |
if the file currently contains an associated pointer, it is destroyed. [Default is True] |
Add an integer value to a JSON file.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path |
the path to the variable |
||
integer(kind=IK), | intent(in) | :: | val |
value |
||
logical(kind=LK), | intent(out), | optional | :: | found |
if the variable was found |
|
logical(kind=LK), | intent(out), | optional | :: | was_created |
if the variable had to be created |
Add an integer vector to a JSON file.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path |
the path to the variable |
||
integer(kind=IK), | intent(in), | dimension(:) | :: | vec |
the value vector |
|
logical(kind=LK), | intent(out), | optional | :: | found |
if the variable was found |
|
logical(kind=LK), | intent(out), | optional | :: | was_created |
if the variable had to be created |
Add a logical(LK) value to a JSON file.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path |
the path to the variable |
||
logical(kind=LK), | intent(in) | :: | val |
value |
||
logical(kind=LK), | intent(out), | optional | :: | found |
if the variable was found |
|
logical(kind=LK), | intent(out), | optional | :: | was_created |
if the variable had to be created |
Add a logical(LK) vector to a JSON file.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path |
the path to the variable |
||
logical(kind=LK), | intent(in), | dimension(:) | :: | vec |
the value vector |
|
logical(kind=LK), | intent(out), | optional | :: | found |
if the variable was found |
|
logical(kind=LK), | intent(out), | optional | :: | was_created |
if the variable had to be created |
Add a json_value pointer to an object to a JSON file.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path |
the path to the variable |
||
type(json_value), | intent(in), | pointer | :: | p |
pointer to the variable to add |
|
logical(kind=LK), | intent(out), | optional | :: | found |
if the variable was found |
|
logical(kind=LK), | intent(out), | optional | :: | was_created |
if the variable had to be created |
Add a real(RK) variable value to a JSON file.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path |
the path to the variable |
||
real(kind=RK), | intent(in) | :: | val |
value |
||
logical(kind=LK), | intent(out), | optional | :: | found |
if the variable was found |
|
logical(kind=LK), | intent(out), | optional | :: | was_created |
if the variable had to be created |
Alternate version of json_file_add_real where val
is real32
.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path |
the path to the variable |
||
real(kind=real32), | intent(in) | :: | val |
value |
||
logical(kind=LK), | intent(out), | optional | :: | found |
if the variable was found |
|
logical(kind=LK), | intent(out), | optional | :: | was_created |
if the variable had to be created |
Alternate version of json_file_add_real_vec where vec
is real32
.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path |
the path to the variable |
||
real(kind=real32), | intent(in), | dimension(:) | :: | vec |
the value vector |
|
logical(kind=LK), | intent(out), | optional | :: | found |
if the variable was found |
|
logical(kind=LK), | intent(out), | optional | :: | was_created |
if the variable had to be created |
Add a real(RK) vector to a JSON file.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path |
the path to the variable |
||
real(kind=RK), | intent(in), | dimension(:) | :: | vec |
the value vector |
|
logical(kind=LK), | intent(out), | optional | :: | found |
if the variable was found |
|
logical(kind=LK), | intent(out), | optional | :: | was_created |
if the variable had to be created |
Add a character string to a json file.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path |
the path to the variable |
||
character(kind=CK, len=*), | intent(in) | :: | val |
value |
||
logical(kind=LK), | intent(out), | optional | :: | found |
if the variable was found |
|
logical(kind=LK), | intent(out), | optional | :: | was_created |
if the variable had to be created |
|
logical(kind=LK), | intent(in), | optional | :: | trim_str |
if TRIM() should be called for the |
|
logical(kind=LK), | intent(in), | optional | :: | adjustl_str |
if ADJUSTL() should be called for the |
Add a string vector to a JSON file.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path |
the path to the variable |
||
character(kind=CK, len=*), | intent(in), | dimension(:) | :: | vec |
the value vector |
|
logical(kind=LK), | intent(out), | optional | :: | found |
if the variable was found |
|
logical(kind=LK), | intent(out), | optional | :: | was_created |
if the variable had to be created |
|
integer(kind=IK), | intent(in), | optional, | dimension(:) | :: | ilen |
the string lengths of each
element in |
logical(kind=LK), | intent(in), | optional | :: | trim_str |
if TRIM() should be called for each element |
|
logical(kind=LK), | intent(in), | optional | :: | adjustl_str |
if ADJUSTL() should be called for each element (note that ADJUSTL is done before TRIM) |
Get an (allocatable length) string vector from a JSON file. This is just a wrapper for json_get_alloc_string_vec_by_path.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path |
the path to the variable |
||
character(kind=CK, len=:), | intent(out), | dimension(:), allocatable | :: | vec |
value vector |
|
integer(kind=IK), | intent(out), | dimension(:), allocatable | :: | ilen |
the actual length of each character string in the array |
|
logical(kind=LK), | intent(out), | optional | :: | found | ||
character(kind=CK, len=*), | intent(in), | optional, | dimension(:) | :: | default | |
integer(kind=IK), | intent(in), | optional, | dimension(:) | :: | default_ilen |
the actual
length of |
Get an integer value from a JSON file.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path |
the path to the variable |
||
integer(kind=IK), | intent(out) | :: | val |
value |
||
logical(kind=LK), | intent(out), | optional | :: | found |
if it was really found |
|
integer(kind=IK), | intent(in), | optional | :: | default |
Get an integer vector from a JSON file.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path |
the path to the variable |
||
integer(kind=IK), | intent(out), | dimension(:), allocatable | :: | vec |
the value vector |
|
logical(kind=LK), | intent(out), | optional | :: | found |
if it was really found |
|
integer(kind=IK), | intent(in), | optional, | dimension(:) | :: | default |
Get a logical(LK) value from a JSON file.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path |
the path to the variable |
||
logical(kind=LK), | intent(out) | :: | val |
value |
||
logical(kind=LK), | intent(out), | optional | :: | found |
if it was really found |
|
logical(kind=LK), | intent(in), | optional | :: | default |
Get a logical(LK) vector from a JSON file.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path |
the path to the variable |
||
logical(kind=LK), | intent(out), | dimension(:), allocatable | :: | vec |
the value vector |
|
logical(kind=LK), | intent(out), | optional | :: | found |
if it was really found |
|
logical(kind=LK), | intent(in), | optional, | dimension(:) | :: | default |
Get a json_value pointer to an object from a JSON file.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path |
the path to the variable |
||
type(json_value), | intent(out), | pointer | :: | p |
pointer to the variable |
|
logical(kind=LK), | intent(out), | optional | :: | found |
if it was really found |
Get a real(RK) variable value from a JSON file.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path |
the path to the variable |
||
real(kind=RK), | intent(out) | :: | val |
value |
||
logical(kind=LK), | intent(out), | optional | :: | found |
if it was really found |
|
real(kind=RK), | intent(in), | optional | :: | default |
Alternate version of json_file_get_real where val
is real32
.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path |
the path to the variable |
||
real(kind=real32), | intent(out) | :: | val |
value |
||
logical(kind=LK), | intent(out), | optional | :: | found |
if it was really found |
|
real(kind=real32), | intent(in), | optional | :: | default |
Alternate version of json_file_get_real_vec where vec
is real32
.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path |
the path to the variable |
||
real(kind=real32), | intent(out), | dimension(:), allocatable | :: | vec |
the value vector |
|
logical(kind=LK), | intent(out), | optional | :: | found |
if it was really found |
|
real(kind=real32), | intent(in), | optional, | dimension(:) | :: | default |
Get a real(RK) vector from a JSON file.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path |
the path to the variable |
||
real(kind=RK), | intent(out), | dimension(:), allocatable | :: | vec |
the value vector |
|
logical(kind=LK), | intent(out), | optional | :: | found |
if it was really found |
|
real(kind=RK), | intent(in), | optional, | dimension(:) | :: | default |
Get a json_value pointer to the JSON file root.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
type(json_value), | intent(out), | pointer | :: | p |
pointer to the variable |
Get a character string from a json file. The output val is an allocatable character string.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path |
the path to the variable |
||
character(kind=CK, len=:), | intent(out), | allocatable | :: | val |
value |
|
logical(kind=LK), | intent(out), | optional | :: | found |
if it was really found |
|
character(kind=CK, len=*), | intent(in), | optional | :: | default |
Get a string vector from a JSON file.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path |
the path to the variable |
||
character(kind=CK, len=*), | intent(out), | dimension(:), allocatable | :: | vec |
value vector |
|
logical(kind=LK), | intent(out), | optional | :: | found |
if it was really found |
|
character(kind=CK, len=*), | intent(in), | optional, | dimension(:) | :: | default |
Load the JSON data from a string.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | str |
string to load JSON data from |
||
logical(kind=LK), | intent(in), | optional | :: | destroy_pointer |
destroy the pointer before loading (default is True) |
Print the JSON file to the console.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me |
Print the JSON structure to the specified filename. The file is opened, printed, and then closed.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CDK, len=*), | intent(in) | :: | filename |
filename to print to |
Prints the JSON file to the specified file unit number.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
integer(kind=IK), | intent(in) | :: | iunit |
file unit number (must not be -1) |
Remove a variable from a JSON file.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path |
the path to the variable |
Rename a variable in a JSON file.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path |
the path to the variable |
||
character(kind=CK, len=*), | intent(in) | :: | name |
the new name |
||
logical(kind=LK), | intent(out), | optional | :: | found |
if the variable was found |
Given the path string, if the variable is present in the file, and is a scalar, then update its value. If it is not present, then create it and set its value.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path | |||
integer(kind=IK), | intent(in) | :: | val | |||
logical(kind=LK), | intent(out) | :: | found |
Given the path string, if the variable is present in the file, and is a scalar, then update its value. If it is not present, then create it and set its value.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path | |||
logical(kind=LK), | intent(in) | :: | val | |||
logical(kind=LK), | intent(out) | :: | found |
Given the path string, if the variable is present in the file, and is a scalar, then update its value. If it is not present, then create it and set its value.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path | |||
real(kind=RK), | intent(in) | :: | val | |||
logical(kind=LK), | intent(out) | :: | found |
Alternate version of json_file_update_real where val
is real32
.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path | |||
real(kind=real32), | intent(in) | :: | val | |||
logical(kind=LK), | intent(out) | :: | found |
Given the path string, if the variable is present in the file, and is a scalar, then update its value. If it is not present, then create it and set its value.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path | |||
character(kind=CK, len=*), | intent(in) | :: | val | |||
logical(kind=LK), | intent(out) | :: | found | |||
logical(kind=LK), | intent(in), | optional | :: | trim_str |
if TRIM() should be called for the |
|
logical(kind=LK), | intent(in), | optional | :: | adjustl_str |
if ADJUSTL() should be called for the |
Returns true if the path
is present in the JSON file.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path |
the path to the variable |
if the variable was found
A wrapper for json_file_valid_path for the .in.
operator
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(kind=CK, len=*), | intent(in) | :: | path |
the path to the variable |
||
class(json_file), | intent(in) | :: | me |
the JSON file |
if the variable was found
Returns information about a variable in a json_file.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path |
path to the variable |
||
logical(kind=LK), | intent(out), | optional | :: | found |
the variable exists in the structure |
|
integer(kind=IK), | intent(out), | optional | :: | var_type |
variable type |
|
integer(kind=IK), | intent(out), | optional | :: | n_children |
number of children |
|
character(kind=CK, len=:), | intent(out), | optional, | allocatable | :: | name |
variable name |
Returns matrix information about a variable in a json_file.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path |
path to the variable |
||
logical(kind=LK), | intent(out) | :: | is_matrix |
true if it is a valid matrix |
||
logical(kind=LK), | intent(out), | optional | :: | found |
true if it was found |
|
integer(kind=IK), | intent(out), | optional | :: | var_type |
variable type of data in the matrix (if all elements have the same type) |
|
integer(kind=IK), | intent(out), | optional | :: | n_sets |
number of data sets (i.e., matrix rows if using row-major order) |
|
integer(kind=IK), | intent(out), | optional | :: | set_size |
size of each data set (i.e., matrix cols if using row-major order) |
|
character(kind=CK, len=:), | intent(out), | optional, | allocatable | :: | name |
variable name |
Load JSON from a file.
Load the JSON data from a file.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CDK, len=*), | intent(in) | :: | filename |
the filename to open |
||
integer(kind=IK), | intent(in), | optional | :: | unit |
the unit number to use (if not present, a newunit is used) |
|
logical(kind=LK), | intent(in), | optional | :: | destroy_pointer |
destroy the pointer before loading (default is True) |
The same as load
, but only here for backward compatibility
Load the JSON data from a file.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CDK, len=*), | intent(in) | :: | filename |
the filename to open |
||
integer(kind=IK), | intent(in), | optional | :: | unit |
the unit number to use (if not present, a newunit is used) |
|
logical(kind=LK), | intent(in), | optional | :: | destroy_pointer |
destroy the pointer before loading (default is True) |
The same as deserialize
, but only here for backward compatibility
Load the JSON data from a string.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | str |
string to load JSON data from |
||
logical(kind=LK), | intent(in), | optional | :: | destroy_pointer |
destroy the pointer before loading (default is True) |
Returns matrix information about a variable in a json_file.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path |
path to the variable |
||
logical(kind=LK), | intent(out) | :: | is_matrix |
true if it is a valid matrix |
||
logical(kind=LK), | intent(out), | optional | :: | found |
true if it was found |
|
integer(kind=IK), | intent(out), | optional | :: | var_type |
variable type of data in the matrix (if all elements have the same type) |
|
integer(kind=IK), | intent(out), | optional | :: | n_sets |
number of data sets (i.e., matrix rows if using row-major order) |
|
integer(kind=IK), | intent(out), | optional | :: | set_size |
size of each data set (i.e., matrix cols if using row-major order) |
|
character(kind=CK, len=:), | intent(out), | optional, | allocatable | :: | name |
variable name |
Move the json_value pointer from one json_file to another. The “from” pointer is then nullified, but not destroyed.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | to | |||
class(json_file), | intent(inout) | :: | from |
Nullify the json_value pointer in a json_file, but do not destroy it.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me |
A wrapper for json_file_valid_path for the .in.
operator
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(kind=CK, len=*), | intent(in) | :: | path |
the path to the variable |
||
class(json_file), | intent(in) | :: | me |
the JSON file |
if the variable was found
Print the JSON file to the console.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me |
Prints the JSON file to the specified file unit number.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
integer(kind=IK), | intent(in) | :: | iunit |
file unit number (must not be -1) |
Print the JSON structure to the specified filename. The file is opened, printed, and then closed.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CDK, len=*), | intent(in) | :: | filename |
filename to print to |
This is a wrapper for json_print_error_message.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
integer, | intent(in), | optional | :: | io_unit |
The same as print
, but only here for backward compatibility
Print the JSON file to the console.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me |
Prints the JSON file to the specified file unit number.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
integer(kind=IK), | intent(in) | :: | iunit |
file unit number (must not be -1) |
Print the JSON structure to the specified filename. The file is opened, printed, and then closed.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CDK, len=*), | intent(in) | :: | filename |
filename to print to |
The same as serialize
, but only here for backward compatibility
Print the JSON file to a string.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=:), | intent(out), | allocatable | :: | str |
string to print JSON data to |
Remove a variable from a json_file by specifying the path.
Remove a variable from a JSON file.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path |
the path to the variable |
Rename a variable, specifying it by path
Rename a variable in a JSON file.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path |
the path to the variable |
||
character(kind=CK, len=*), | intent(in) | :: | name |
the new name |
||
logical(kind=LK), | intent(out), | optional | :: | found |
if the variable was found |
Print the json_value structure to an allocatable string
Print the JSON file to a string.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=:), | intent(out), | allocatable | :: | str |
string to print JSON data to |
Set the json_core for this json_file.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
type(json_core), | intent(in) | :: | core |
Traverse the JSON structure in the file. This routine calls the user-specified json_traverse_callback_func for each element of the structure.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
procedure(json_traverse_callback_func) | :: | traverse_callback |
Update a scalar variable in a json_file, by specifying the path.
Note
These have been mostly supplanted by the add
methods, which do a similar thing (and can be used for
scalars and vectors, etc.)
Given the path string, if the variable is present in the file, and is a scalar, then update its value. If it is not present, then create it and set its value.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path | |||
integer(kind=IK), | intent(in) | :: | val | |||
logical(kind=LK), | intent(out) | :: | found |
Given the path string, if the variable is present in the file, and is a scalar, then update its value. If it is not present, then create it and set its value.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path | |||
logical(kind=LK), | intent(in) | :: | val | |||
logical(kind=LK), | intent(out) | :: | found |
Alternate version of json_file_update_real where val
is real32
.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path | |||
real(kind=real32), | intent(in) | :: | val | |||
logical(kind=LK), | intent(out) | :: | found |
Given the path string, if the variable is present in the file, and is a scalar, then update its value. If it is not present, then create it and set its value.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path | |||
real(kind=RK), | intent(in) | :: | val | |||
logical(kind=LK), | intent(out) | :: | found |
Given the path string, if the variable is present in the file, and is a scalar, then update its value. If it is not present, then create it and set its value.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path | |||
character(kind=CK, len=*), | intent(in) | :: | val | |||
logical(kind=LK), | intent(out) | :: | found | |||
logical(kind=LK), | intent(in), | optional | :: | trim_str |
if TRIM() should be called for the |
|
logical(kind=LK), | intent(in), | optional | :: | adjustl_str |
if ADJUSTL() should be called for the |
Verify that a path is valid (i.e., a variable with this path exists in the file).
Returns true if the path
is present in the JSON file.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path |
the path to the variable |
if the variable was found
type,public :: json_file private type(json_core) :: core !! The instance of the [[json_core(type)]] !! factory used for this file. type(json_value),pointer :: p => null() !! the JSON structure read from the file contains generic,public :: initialize => initialize_json_core_in_file,& set_json_core_in_file procedure,public :: get_core => get_json_core_in_file !> ! Load JSON from a file. procedure,public :: load => json_file_load !> ! The same as `load`, but only here for backward compatibility procedure,public :: load_file => json_file_load !> ! Load JSON from a string. generic,public :: deserialize => MAYBEWRAP(json_file_load_from_string) !> ! The same as `deserialize`, but only here for backward compatibility generic,public :: load_from_string => MAYBEWRAP(json_file_load_from_string) !> ! Print the [[json_value]] structure to an allocatable string procedure,public :: serialize => json_file_print_to_string !> ! The same as `serialize`, but only here for backward compatibility procedure,public :: print_to_string => json_file_print_to_string procedure,public :: destroy => json_file_destroy procedure,public :: nullify => json_file_nullify procedure,public :: move => json_file_move_pointer generic,public :: info => MAYBEWRAP(json_file_variable_info) generic,public :: matrix_info => MAYBEWRAP(json_file_variable_matrix_info) !error checking: procedure,public :: failed => json_file_failed procedure,public :: print_error_message => json_file_print_error_message procedure,public :: check_for_errors => json_file_check_for_errors procedure,public :: clear_exceptions => json_file_clear_exceptions generic,public :: print => json_file_print_to_console, & json_file_print_to_unit, & json_file_print_to_filename !> ! The same as `print`, but only here for backward compatibility generic,public :: print_file => json_file_print_to_console, & json_file_print_to_unit, & json_file_print_to_filename !> ! Rename a variable, specifying it by path generic,public :: rename => MAYBEWRAP(json_file_rename) #ifdef USE_UCS4 generic,public :: rename => json_file_rename_path_ascii, & json_file_rename_name_ascii #endif !> ! Verify that a path is valid ! (i.e., a variable with this path exists in the file). generic,public :: valid_path => MAYBEWRAP(json_file_valid_path) !> ! Get a variable from a [[json_file(type)]], by specifying the path. generic,public :: get => MAYBEWRAP(json_file_get_object), & MAYBEWRAP(json_file_get_integer), & #ifndef REAL32 MAYBEWRAP(json_file_get_real32), & #endif MAYBEWRAP(json_file_get_real), & #ifdef REAL128 MAYBEWRAP(json_file_get_real64), & #endif MAYBEWRAP(json_file_get_logical), & MAYBEWRAP(json_file_get_string), & MAYBEWRAP(json_file_get_integer_vec), & #ifndef REAL32 MAYBEWRAP(json_file_get_real32_vec), & #endif MAYBEWRAP(json_file_get_real_vec), & #ifdef REAL128 MAYBEWRAP(json_file_get_real64_vec), & #endif MAYBEWRAP(json_file_get_logical_vec), & MAYBEWRAP(json_file_get_string_vec), & MAYBEWRAP(json_file_get_alloc_string_vec), & json_file_get_root !> ! Add a variable to a [[json_file(type)]], by specifying the path. ! !### Example ! !```fortran ! program test ! use json_module, rk=>json_rk, ik=>json_ik ! implicit none ! type(json_file) :: f ! call f%initialize() ! specify whatever init options you want. ! call f%add('inputs.t', 0.0_rk) ! call f%add('inputs.x', [1.0_rk,2.0_rk,3.0_rk]) ! call f%add('inputs.flag', .true.) ! call f%print() ! print to the console ! end program test !``` generic,public :: add => json_file_add, & MAYBEWRAP(json_file_add_object), & MAYBEWRAP(json_file_add_integer), & #ifndef REAL32 MAYBEWRAP(json_file_add_real32), & #endif MAYBEWRAP(json_file_add_real), & #ifdef REAL128 MAYBEWRAP(json_file_add_real64), & #endif MAYBEWRAP(json_file_add_logical), & MAYBEWRAP(json_file_add_string), & MAYBEWRAP(json_file_add_integer_vec), & #ifndef REAL32 MAYBEWRAP(json_file_add_real32_vec), & #endif MAYBEWRAP(json_file_add_real_vec), & #ifdef REAL128 MAYBEWRAP(json_file_add_real64_vec), & #endif MAYBEWRAP(json_file_add_logical_vec), & MAYBEWRAP(json_file_add_string_vec) #ifdef USE_UCS4 generic,public :: add => json_file_add_string_path_ascii, & json_file_add_string_value_ascii,& json_file_add_string_vec_path_ascii,& json_file_add_string_vec_vec_ascii #endif !> ! Update a scalar variable in a [[json_file(type)]], ! by specifying the path. ! !@note These have been mostly supplanted by the `add` ! methods, which do a similar thing (and can be used for ! scalars and vectors, etc.) generic,public :: update => MAYBEWRAP(json_file_update_integer), & MAYBEWRAP(json_file_update_logical), & #ifndef REAL32 MAYBEWRAP(json_file_update_real32), & #endif MAYBEWRAP(json_file_update_real), & #ifdef REAL128 MAYBEWRAP(json_file_update_real64), & #endif MAYBEWRAP(json_file_update_string) #ifdef USE_UCS4 generic,public :: update => json_file_update_string_name_ascii, & json_file_update_string_val_ascii #endif !> ! Remove a variable from a [[json_file(type)]] ! by specifying the path. generic,public :: remove => MAYBEWRAP(json_file_remove) !traverse procedure,public :: traverse => json_file_traverse ! *************************************************** ! operators ! *************************************************** generic,public :: operator(.in.) => MAYBEWRAP(json_file_valid_path_op) procedure,pass(me) :: MAYBEWRAP(json_file_valid_path_op) generic,public :: assignment(=) => assign_json_file,& assign_json_file_to_string,& MAYBEWRAP(assign_string_to_json_file) procedure :: assign_json_file procedure,pass(me) :: assign_json_file_to_string procedure :: MAYBEWRAP(assign_string_to_json_file) ! *************************************************** ! private routines ! *************************************************** !load from string: procedure :: MAYBEWRAP(json_file_load_from_string) !initialize procedure :: initialize_json_core_in_file procedure :: set_json_core_in_file !get info: procedure :: MAYBEWRAP(json_file_variable_info) procedure :: MAYBEWRAP(json_file_variable_matrix_info) !rename: procedure :: MAYBEWRAP(json_file_rename) #ifdef USE_UCS4 procedure :: json_file_rename_path_ascii procedure :: json_file_rename_name_ascii #endif !validate path: procedure :: MAYBEWRAP(json_file_valid_path) !get: procedure :: MAYBEWRAP(json_file_get_object) procedure :: MAYBEWRAP(json_file_get_integer) #ifndef REAL32 procedure :: MAYBEWRAP(json_file_get_real32) #endif procedure :: MAYBEWRAP(json_file_get_real) #ifdef REAL128 procedure :: MAYBEWRAP(json_file_get_real64) #endif procedure :: MAYBEWRAP(json_file_get_logical) procedure :: MAYBEWRAP(json_file_get_string) procedure :: MAYBEWRAP(json_file_get_integer_vec) #ifndef REAL32 procedure :: MAYBEWRAP(json_file_get_real32_vec) #endif procedure :: MAYBEWRAP(json_file_get_real_vec) #ifdef REAL128 procedure :: MAYBEWRAP(json_file_get_real64_vec) #endif procedure :: MAYBEWRAP(json_file_get_logical_vec) procedure :: MAYBEWRAP(json_file_get_string_vec) procedure :: MAYBEWRAP(json_file_get_alloc_string_vec) procedure :: json_file_get_root !add: procedure :: json_file_add procedure :: MAYBEWRAP(json_file_add_object) procedure :: MAYBEWRAP(json_file_add_integer) #ifndef REAL32 procedure :: MAYBEWRAP(json_file_add_real32) #endif procedure :: MAYBEWRAP(json_file_add_real) #ifdef REAL128 procedure :: MAYBEWRAP(json_file_add_real64) #endif procedure :: MAYBEWRAP(json_file_add_logical) procedure :: MAYBEWRAP(json_file_add_string) procedure :: MAYBEWRAP(json_file_add_integer_vec) #ifndef REAL32 procedure :: MAYBEWRAP(json_file_add_real32_vec) #endif procedure :: MAYBEWRAP(json_file_add_real_vec) #ifdef REAL128 procedure :: MAYBEWRAP(json_file_add_real64_vec) #endif procedure :: MAYBEWRAP(json_file_add_logical_vec) procedure :: MAYBEWRAP(json_file_add_string_vec) #ifdef USE_UCS4 procedure :: json_file_add_string_path_ascii procedure :: json_file_add_string_value_ascii procedure :: json_file_add_string_vec_path_ascii procedure :: json_file_add_string_vec_vec_ascii #endif !update: procedure :: MAYBEWRAP(json_file_update_integer) procedure :: MAYBEWRAP(json_file_update_logical) #ifndef REAL32 procedure :: MAYBEWRAP(json_file_update_real32) #endif procedure :: MAYBEWRAP(json_file_update_real) #ifdef REAL128 procedure :: MAYBEWRAP(json_file_update_real64) #endif procedure :: MAYBEWRAP(json_file_update_string) #ifdef USE_UCS4 procedure :: json_file_update_string_name_ascii procedure :: json_file_update_string_val_ascii #endif !remove: procedure :: MAYBEWRAP(json_file_remove) !print: procedure :: json_file_print_to_console procedure :: json_file_print_to_unit procedure :: json_file_print_to_filename final :: finalize_json_file end type json_file