json_get_real_by_path Subroutine

private subroutine json_get_real_by_path(json, me, path, value, found)

Get a real value from a json_value, given the path.

Arguments

Type IntentOptional AttributesName
class(json_core), intent(inout) :: json
type(json_value), pointer:: me
character(kind=CK,len=*), intent(in) :: path
real(kind=RK), intent(out) :: value
logical(kind=LK), intent(out), optional :: found

Contents

Source Code


Source Code

    subroutine json_get_real_by_path(json, me, path, value, found)

    implicit none

    class(json_core),intent(inout)      :: json
    type(json_value),pointer            :: me
    character(kind=CK,len=*),intent(in) :: path
    real(RK),intent(out)                :: value
    logical(LK),intent(out),optional    :: found

    type(json_value),pointer :: p

    value = 0.0_RK
    if ( json%exception_thrown ) then
        if ( present(found) ) found = .false.
        return
    end if

    nullify(p)

    call json%get(me=me, path=path, p=p)

    if (.not. associated(p)) then

        call json%throw_exception('Error in json_get_real_by_path:'//&
                             ' Unable to resolve path: '//trim(path),found)

    else

        call json%get(p,value)
        nullify(p)

    end if

    if (json%exception_thrown) then
        if (present(found)) then
            found = .false.
            call json%clear_exceptions()
        end if
    else
        if (present(found)) found = .true.
    end if

    end subroutine json_get_real_by_path