Get a character string from a json_value.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_core), | intent(inout) | :: | json | |||
type(json_value), | intent(in), | pointer | :: | me | ||
character(kind=CK,len=:), | intent(out), | allocatable | :: | value |
subroutine json_get_string(json, me, value)
implicit none
class(json_core),intent(inout) :: json
type(json_value),pointer,intent(in) :: me
character(kind=CK,len=:),allocatable,intent(out) :: value
value = CK_''
if (.not. json%exception_thrown) then
if (me%var_type == json_string) then
if (allocated(me%str_value)) then
if (json%unescaped_strings) then
! default: it is stored already unescaped:
value = me%str_value
else
! return the escaped version:
call escape_string(me%str_value, value, json%escape_solidus)
end if
else
call json%throw_exception('Error in json_get_string: '//&
'me%str_value not allocated')
end if
else
if (json%strict_type_checking) then
call json%throw_exception('Error in json_get_string:'//&
' Unable to resolve value to string: '//me%name)
else
select case (me%var_type)
case (json_integer)
if (allocated(me%int_value)) then
value = repeat(' ', max_integer_str_len)
call integer_to_string(me%int_value,int_fmt,value)
value = trim(value)
else
call json%throw_exception('Error in json_get_string: '//&
'me%int_value not allocated')
end if
case (json_double)
if (allocated(me%dbl_value)) then
value = repeat(' ', max_numeric_str_len)
call real_to_string(me%dbl_value,json%real_fmt,&
json%compact_real,value)
value = trim(value)
else
call json%throw_exception('Error in json_get_string: '//&
'me%int_value not allocated')
end if
case (json_logical)
if (allocated(me%log_value)) then
if (me%log_value) then
value = true_str
else
value = false_str
end if
else
call json%throw_exception('Error in json_get_string: '//&
'me%log_value not allocated')
end if
case (json_null)
value = null_str
case default
call json%throw_exception('Error in json_get_string: '//&
'Unable to resolve value to characters: '//&
me%name)
end select
end if
end if
end if
end subroutine json_get_string