Type used to construct the linked-list JSON structure. Normally, this should always be a pointer variable. This type should only be used by an instance of json_core.
The following test program:
program test use json_module implicit none type(json_core) :: json type(json_value),pointer :: p call json%create_object(p,'') !create the root call json%add(p,'year',1805) !add some data call json%add(p,'value',1.0_RK) !add some data call json%print(p,'test.json') !write it to a file call json%destroy(p) !cleanup end program test
Produces the JSON file test.json:
{ "year": 1805, "value": 0.1E+1 }
Pointers of this type should only be allocated using the methods from json_core.
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
type(json_value), | private, | pointer | :: | children | => | null() | first child item of this |
real(kind=RK), | private, | allocatable | :: | dbl_value | real data for this variable |
||
integer(kind=IK), | private, | allocatable | :: | int_value | integer data for this variable |
||
logical(kind=LK), | private, | allocatable | :: | log_value | logical data for this variable |
||
integer(kind=IK), | private | :: | n_children | = | 0 | number of children |
|
character(kind=CK,len=:), | private, | allocatable | :: | name | variable name (unescaped) |
||
type(json_value), | private, | pointer | :: | next | => | null() | next item in the list |
type(json_value), | private, | pointer | :: | parent | => | null() | parent item of this |
type(json_value), | private, | pointer | :: | previous | => | null() | previous item in the list |
character(kind=CK,len=:), | private, | allocatable | :: | str_value | string data for this variable (unescaped) |
||
type(json_value), | private, | pointer | :: | tail | => | null() | last child item of this |
integer(kind=IK), | private | :: | var_type | = | json_unknown | variable type |
type,public :: json_value
!force the constituents to be stored contiguously
![note: on Intel, the order of the variables below
! is significant to avoid the misaligned field warnings]
sequence
private
!for the linked list:
type(json_value),pointer :: previous => null() !! previous item in the list
type(json_value),pointer :: next => null() !! next item in the list
type(json_value),pointer :: parent => null() !! parent item of this
type(json_value),pointer :: children => null() !! first child item of this
type(json_value),pointer :: tail => null() !! last child item of this
character(kind=CK,len=:),allocatable :: name !! variable name (unescaped)
real(RK),allocatable :: dbl_value !! real data for this variable
logical(LK),allocatable :: log_value !! logical data for this variable
character(kind=CK,len=:),allocatable :: str_value !! string data for this variable
!! (unescaped)
integer(IK),allocatable :: int_value !! integer data for this variable
integer(IK) :: var_type = json_unknown !! variable type
integer(IK),private :: n_children = 0 !! number of children
end type json_value