json_value_get_child_by_index Subroutine

private subroutine json_value_get_child_by_index(json, p, idx, child, found)

Returns a child in the object or array given the index.

Type Bound

json_core

Arguments

Type IntentOptional Attributes Name
class(json_core), intent(inout) :: json
type(json_value), intent(in), pointer :: p

object or array JSON data

integer(kind=IK), intent(in) :: idx

index of the child (this is a 1-based Fortran style array index).

type(json_value), pointer :: child

pointer to the child

logical(kind=LK), intent(out), optional :: found

true if the value was found (if not present, an exception will be thrown if it was not found. If present and not found, no exception will be thrown).


Calls

proc~~json_value_get_child_by_index~~CallsGraph proc~json_value_get_child_by_index json_value_module::json_core%json_value_get_child_by_index none~throw_exception json_value_module::json_core%throw_exception proc~json_value_get_child_by_index->none~throw_exception proc~json_clear_exceptions json_value_module::json_core%json_clear_exceptions proc~json_value_get_child_by_index->proc~json_clear_exceptions proc~json_throw_exception json_value_module::json_core%json_throw_exception none~throw_exception->proc~json_throw_exception

Called by

proc~~json_value_get_child_by_index~~CalledByGraph proc~json_value_get_child_by_index json_value_module::json_core%json_value_get_child_by_index none~get_child json_value_module::json_core%get_child none~get_child->proc~json_value_get_child_by_index proc~json_check_children_for_duplicate_keys json_value_module::json_core%json_check_children_for_duplicate_keys proc~json_check_children_for_duplicate_keys->none~get_child none~get_path json_value_module::json_core%get_path proc~json_check_children_for_duplicate_keys->none~get_path proc~json_get_by_path_default json_value_module::json_core%json_get_by_path_default proc~json_get_by_path_default->none~get_child none~add json_value_module::json_core%add proc~json_get_by_path_default->none~add proc~json_get_by_path_jsonpath_bracket json_value_module::json_core%json_get_by_path_jsonpath_bracket proc~json_get_by_path_jsonpath_bracket->none~get_child proc~convert json_value_module::json_core%convert proc~json_get_by_path_jsonpath_bracket->proc~convert proc~json_get_by_path_jsonpath_bracket->none~add proc~json_get_by_path_rfc6901 json_value_module::json_core%json_get_by_path_rfc6901 proc~json_get_by_path_rfc6901->none~get_child proc~json_matrix_info json_value_module::json_core%json_matrix_info proc~json_matrix_info->none~get_child none~info json_value_module::json_core%info proc~json_matrix_info->none~info proc~json_value_insert_after_child_by_index json_value_module::json_core%json_value_insert_after_child_by_index proc~json_value_insert_after_child_by_index->none~get_child none~insert_after json_value_module::json_core%insert_after proc~json_value_insert_after_child_by_index->none~insert_after none~insert_after->proc~json_value_insert_after_child_by_index none~matrix_info json_value_module::json_core%matrix_info none~matrix_info->proc~json_matrix_info proc~json_matrix_info_by_path json_value_module::json_core%json_matrix_info_by_path none~matrix_info->proc~json_matrix_info_by_path proc~json_create_by_path json_value_module::json_core%json_create_by_path proc~json_create_by_path->proc~json_get_by_path_default proc~json_create_by_path->proc~json_get_by_path_jsonpath_bracket proc~json_get_by_path json_value_module::json_core%json_get_by_path proc~json_get_by_path->proc~json_get_by_path_default proc~json_get_by_path->proc~json_get_by_path_jsonpath_bracket proc~json_get_by_path->proc~json_get_by_path_rfc6901 none~create json_value_module::json_core%create none~create->proc~json_create_by_path none~get json_value_module::json_core%get none~get->proc~json_get_by_path proc~json_get_alloc_string_vec json_value_module::json_core%json_get_alloc_string_vec none~get->proc~json_get_alloc_string_vec proc~json_get_alloc_string_vec_by_path json_value_module::json_core%json_get_alloc_string_vec_by_path none~get->proc~json_get_alloc_string_vec_by_path proc~json_get_array_by_path json_value_module::json_core%json_get_array_by_path none~get->proc~json_get_array_by_path proc~json_get_integer_by_path json_value_module::json_core%json_get_integer_by_path none~get->proc~json_get_integer_by_path proc~json_get_integer_vec json_value_module::json_core%json_get_integer_vec none~get->proc~json_get_integer_vec proc~json_get_integer_vec_by_path json_value_module::json_core%json_get_integer_vec_by_path none~get->proc~json_get_integer_vec_by_path proc~json_get_logical_by_path json_value_module::json_core%json_get_logical_by_path none~get->proc~json_get_logical_by_path proc~json_get_logical_vec json_value_module::json_core%json_get_logical_vec none~get->proc~json_get_logical_vec proc~json_get_logical_vec_by_path json_value_module::json_core%json_get_logical_vec_by_path none~get->proc~json_get_logical_vec_by_path proc~json_get_real32 json_value_module::json_core%json_get_real32 none~get->proc~json_get_real32 proc~json_get_real32_by_path json_value_module::json_core%json_get_real32_by_path none~get->proc~json_get_real32_by_path proc~json_get_real32_vec json_value_module::json_core%json_get_real32_vec none~get->proc~json_get_real32_vec proc~json_get_real32_vec_by_path json_value_module::json_core%json_get_real32_vec_by_path none~get->proc~json_get_real32_vec_by_path proc~json_get_real_by_path json_value_module::json_core%json_get_real_by_path none~get->proc~json_get_real_by_path proc~json_get_real_vec json_value_module::json_core%json_get_real_vec none~get->proc~json_get_real_vec proc~json_get_real_vec_by_path json_value_module::json_core%json_get_real_vec_by_path none~get->proc~json_get_real_vec_by_path proc~json_get_string_by_path json_value_module::json_core%json_get_string_by_path none~get->proc~json_get_string_by_path proc~json_get_string_vec json_value_module::json_core%json_get_string_vec none~get->proc~json_get_string_vec proc~json_get_string_vec_by_path json_value_module::json_core%json_get_string_vec_by_path none~get->proc~json_get_string_vec_by_path proc~json_file_variable_matrix_info json_file_module::json_file%json_file_variable_matrix_info proc~json_file_variable_matrix_info->none~matrix_info proc~json_matrix_info_by_path->none~matrix_info proc~json_matrix_info_by_path->none~get proc~json_value_replace json_value_module::json_core%json_value_replace proc~json_value_replace->none~insert_after proc~wrap_json_matrix_info_by_path json_value_module::wrap_json_matrix_info_by_path proc~wrap_json_matrix_info_by_path->none~matrix_info none~matrix_info~2 json_file_module::json_file%matrix_info none~matrix_info~2->proc~json_file_variable_matrix_info proc~convert->proc~json_value_replace proc~convert->none~info proc~json_add_integer_by_path json_value_module::json_core%json_add_integer_by_path proc~json_add_integer_by_path->none~create proc~json_add_integer_by_path->proc~json_value_replace proc~json_add_integer_by_path->none~info proc~json_add_integer_vec_by_path json_value_module::json_core%json_add_integer_vec_by_path proc~json_add_integer_vec_by_path->none~create proc~json_add_integer_vec_by_path->proc~json_value_replace proc~json_add_integer_vec_by_path->none~info proc~json_add_integer_vec_by_path->none~add proc~json_add_logical_by_path json_value_module::json_core%json_add_logical_by_path proc~json_add_logical_by_path->none~create proc~json_add_logical_by_path->proc~json_value_replace proc~json_add_logical_by_path->none~info proc~json_add_logical_vec_by_path json_value_module::json_core%json_add_logical_vec_by_path proc~json_add_logical_vec_by_path->none~create proc~json_add_logical_vec_by_path->proc~json_value_replace proc~json_add_logical_vec_by_path->none~info proc~json_add_logical_vec_by_path->none~add proc~json_add_member_by_path json_value_module::json_core%json_add_member_by_path proc~json_add_member_by_path->none~create proc~json_add_member_by_path->proc~json_value_replace proc~json_add_member_by_path->none~info proc~json_add_real_by_path json_value_module::json_core%json_add_real_by_path proc~json_add_real_by_path->none~create proc~json_add_real_by_path->proc~json_value_replace proc~json_add_real_by_path->none~info proc~json_add_real_vec_by_path json_value_module::json_core%json_add_real_vec_by_path proc~json_add_real_vec_by_path->none~create proc~json_add_real_vec_by_path->proc~json_value_replace proc~json_add_real_vec_by_path->none~info proc~json_add_real_vec_by_path->none~add proc~json_add_string_by_path json_value_module::json_core%json_add_string_by_path proc~json_add_string_by_path->none~create proc~json_add_string_by_path->proc~json_value_replace proc~json_add_string_by_path->none~info proc~json_add_string_vec_by_path json_value_module::json_core%json_add_string_vec_by_path proc~json_add_string_vec_by_path->none~create proc~json_add_string_vec_by_path->proc~json_value_replace proc~json_add_string_vec_by_path->none~info proc~json_add_string_vec_by_path->none~add proc~json_file_get_alloc_string_vec json_file_module::json_file%json_file_get_alloc_string_vec proc~json_file_get_alloc_string_vec->none~get proc~json_file_get_integer json_file_module::json_file%json_file_get_integer proc~json_file_get_integer->none~get proc~json_file_get_integer_vec json_file_module::json_file%json_file_get_integer_vec proc~json_file_get_integer_vec->none~get proc~json_file_get_logical json_file_module::json_file%json_file_get_logical proc~json_file_get_logical->none~get proc~json_file_get_logical_vec json_file_module::json_file%json_file_get_logical_vec proc~json_file_get_logical_vec->none~get proc~json_file_get_object json_file_module::json_file%json_file_get_object proc~json_file_get_object->none~get proc~json_file_get_real json_file_module::json_file%json_file_get_real proc~json_file_get_real->none~get proc~json_file_get_real32 json_file_module::json_file%json_file_get_real32 proc~json_file_get_real32->none~get proc~json_file_get_real32_vec json_file_module::json_file%json_file_get_real32_vec proc~json_file_get_real32_vec->none~get proc~json_file_get_real_vec json_file_module::json_file%json_file_get_real_vec proc~json_file_get_real_vec->none~get proc~json_file_get_string json_file_module::json_file%json_file_get_string proc~json_file_get_string->none~get proc~json_file_get_string_vec json_file_module::json_file%json_file_get_string_vec proc~json_file_get_string_vec->none~get proc~json_get_alloc_string_vec->none~get none~string_info json_value_module::json_core%string_info proc~json_get_alloc_string_vec->none~string_info proc~json_get_alloc_string_vec_by_path->none~get proc~json_get_array_by_path->none~get proc~json_get_integer_by_path->none~get proc~json_get_integer_vec->none~get proc~json_get_integer_vec_by_path->none~get proc~json_get_logical_by_path->none~get proc~json_get_logical_vec->none~get proc~json_get_logical_vec_by_path->none~get proc~json_get_real32->none~get proc~json_get_real32_by_path->none~get proc~json_get_real32_vec->none~get proc~json_get_real32_vec_by_path->none~get proc~json_get_real_by_path->none~get proc~json_get_real_vec->none~get proc~json_get_real_vec_by_path->none~get proc~json_get_string_by_path->none~get proc~json_get_string_vec->none~get proc~json_get_string_vec_by_path->none~get proc~json_info_by_path json_value_module::json_core%json_info_by_path proc~json_info_by_path->none~get proc~json_info_by_path->none~info proc~json_rename_by_path json_value_module::json_core%json_rename_by_path proc~json_rename_by_path->none~get proc~json_string_info json_value_module::json_core%json_string_info proc~json_string_info->none~get proc~json_string_info->none~info proc~json_update_integer json_value_module::json_core%json_update_integer proc~json_update_integer->none~get none~add_by_path json_value_module::json_core%add_by_path proc~json_update_integer->none~add_by_path proc~json_update_integer->none~info proc~json_update_logical json_value_module::json_core%json_update_logical proc~json_update_logical->none~get proc~json_update_logical->none~add_by_path proc~json_update_logical->none~info proc~json_update_real json_value_module::json_core%json_update_real proc~json_update_real->none~get proc~json_update_real->none~add_by_path proc~json_update_real->none~info proc~json_update_string json_value_module::json_core%json_update_string proc~json_update_string->none~get proc~json_update_string->none~add_by_path proc~json_update_string->none~info proc~json_valid_path json_value_module::json_core%json_valid_path proc~json_valid_path->none~get proc~json_value_remove_if_present json_value_module::json_core%json_value_remove_if_present proc~json_value_remove_if_present->none~get proc~wrap_json_create_by_path json_value_module::wrap_json_create_by_path proc~wrap_json_create_by_path->none~create proc~wrap_json_get_alloc_string_vec_by_path json_value_module::wrap_json_get_alloc_string_vec_by_path proc~wrap_json_get_alloc_string_vec_by_path->none~get proc~wrap_json_get_array_by_path json_value_module::wrap_json_get_array_by_path proc~wrap_json_get_array_by_path->none~get proc~wrap_json_get_by_path json_value_module::wrap_json_get_by_path proc~wrap_json_get_by_path->none~get proc~wrap_json_get_integer_by_path json_value_module::wrap_json_get_integer_by_path proc~wrap_json_get_integer_by_path->none~get proc~wrap_json_get_integer_vec_by_path json_value_module::wrap_json_get_integer_vec_by_path proc~wrap_json_get_integer_vec_by_path->none~get proc~wrap_json_get_logical_by_path json_value_module::wrap_json_get_logical_by_path proc~wrap_json_get_logical_by_path->none~get proc~wrap_json_get_logical_vec_by_path json_value_module::wrap_json_get_logical_vec_by_path proc~wrap_json_get_logical_vec_by_path->none~get proc~wrap_json_get_real32_by_path json_value_module::wrap_json_get_real32_by_path proc~wrap_json_get_real32_by_path->none~get proc~wrap_json_get_real32_vec_by_path json_value_module::wrap_json_get_real32_vec_by_path proc~wrap_json_get_real32_vec_by_path->none~get proc~wrap_json_get_real_by_path json_value_module::wrap_json_get_real_by_path proc~wrap_json_get_real_by_path->none~get proc~wrap_json_get_real_vec_by_path json_value_module::wrap_json_get_real_vec_by_path proc~wrap_json_get_real_vec_by_path->none~get proc~wrap_json_get_string_by_path json_value_module::wrap_json_get_string_by_path proc~wrap_json_get_string_by_path->none~get proc~wrap_json_get_string_vec_by_path json_value_module::wrap_json_get_string_vec_by_path proc~wrap_json_get_string_vec_by_path->none~get proc~wrap_json_value_get_child_by_name json_value_module::wrap_json_value_get_child_by_name proc~wrap_json_value_get_child_by_name->none~get none~add_by_path->proc~json_add_integer_by_path none~add_by_path->proc~json_add_integer_vec_by_path none~add_by_path->proc~json_add_logical_by_path none~add_by_path->proc~json_add_logical_vec_by_path none~add_by_path->proc~json_add_member_by_path none~add_by_path->proc~json_add_real_by_path none~add_by_path->proc~json_add_real_vec_by_path none~add_by_path->proc~json_add_string_by_path none~add_by_path->proc~json_add_string_vec_by_path proc~json_add_real32_by_path json_value_module::json_core%json_add_real32_by_path none~add_by_path->proc~json_add_real32_by_path proc~json_add_real32_vec_by_path json_value_module::json_core%json_add_real32_vec_by_path none~add_by_path->proc~json_add_real32_vec_by_path none~get~2 json_file_module::json_file%get none~get~2->proc~json_file_get_alloc_string_vec none~get~2->proc~json_file_get_integer none~get~2->proc~json_file_get_integer_vec none~get~2->proc~json_file_get_logical none~get~2->proc~json_file_get_logical_vec none~get~2->proc~json_file_get_object none~get~2->proc~json_file_get_real none~get~2->proc~json_file_get_real32 none~get~2->proc~json_file_get_real32_vec none~get~2->proc~json_file_get_real_vec none~get~2->proc~json_file_get_string none~get~2->proc~json_file_get_string_vec none~info->proc~json_info_by_path none~remove_if_present json_value_module::json_core%remove_if_present none~remove_if_present->proc~json_value_remove_if_present none~string_info->proc~json_string_info none~update json_value_module::json_core%update none~update->proc~json_update_integer none~update->proc~json_update_logical none~update->proc~json_update_real none~update->proc~json_update_string proc~json_update_real32 json_value_module::json_core%json_update_real32 none~update->proc~json_update_real32 none~valid_path json_value_module::json_core%valid_path none~valid_path->proc~json_valid_path proc~json_add_string_by_path_path_ascii json_value_module::json_add_string_by_path_path_ascii proc~json_add_string_by_path_path_ascii->proc~json_add_string_by_path proc~json_add_string_by_path_value_ascii json_value_module::json_add_string_by_path_value_ascii proc~json_add_string_by_path_value_ascii->proc~json_add_string_by_path proc~json_add_string_vec_by_path_path_ascii json_value_module::json_add_string_vec_by_path_path_ascii proc~json_add_string_vec_by_path_path_ascii->proc~json_add_string_vec_by_path proc~json_add_string_vec_by_path_value_ascii json_value_module::json_add_string_vec_by_path_value_ascii proc~json_add_string_vec_by_path_value_ascii->proc~json_add_string_vec_by_path proc~wrap_json_add_integer_by_path json_value_module::wrap_json_add_integer_by_path proc~wrap_json_add_integer_by_path->proc~json_add_integer_by_path proc~wrap_json_add_integer_vec_by_path json_value_module::wrap_json_add_integer_vec_by_path proc~wrap_json_add_integer_vec_by_path->proc~json_add_integer_vec_by_path proc~wrap_json_add_logical_by_path json_value_module::wrap_json_add_logical_by_path proc~wrap_json_add_logical_by_path->proc~json_add_logical_by_path proc~wrap_json_add_logical_vec_by_path json_value_module::wrap_json_add_logical_vec_by_path proc~wrap_json_add_logical_vec_by_path->proc~json_add_logical_vec_by_path proc~wrap_json_add_member_by_path json_value_module::wrap_json_add_member_by_path proc~wrap_json_add_member_by_path->proc~json_add_member_by_path proc~wrap_json_add_real_by_path json_value_module::wrap_json_add_real_by_path proc~wrap_json_add_real_by_path->proc~json_add_real_by_path proc~wrap_json_add_real_vec_by_path json_value_module::wrap_json_add_real_vec_by_path proc~wrap_json_add_real_vec_by_path->proc~json_add_real_vec_by_path proc~wrap_json_add_string_by_path json_value_module::wrap_json_add_string_by_path proc~wrap_json_add_string_by_path->proc~json_add_string_by_path proc~wrap_json_add_string_vec_by_path json_value_module::wrap_json_add_string_vec_by_path proc~wrap_json_add_string_vec_by_path->proc~json_add_string_vec_by_path proc~wrap_json_file_variable_matrix_info json_file_module::wrap_json_file_variable_matrix_info proc~wrap_json_file_variable_matrix_info->none~matrix_info~2 proc~json_add_real32_by_path->none~add_by_path proc~json_add_real32_vec_by_path->none~add_by_path proc~json_file_add_integer json_file_module::json_file%json_file_add_integer proc~json_file_add_integer->none~add_by_path proc~json_file_add_integer_vec json_file_module::json_file%json_file_add_integer_vec proc~json_file_add_integer_vec->none~add_by_path proc~json_file_add_logical json_file_module::json_file%json_file_add_logical proc~json_file_add_logical->none~add_by_path proc~json_file_add_logical_vec json_file_module::json_file%json_file_add_logical_vec proc~json_file_add_logical_vec->none~add_by_path proc~json_file_add_object json_file_module::json_file%json_file_add_object proc~json_file_add_object->none~add_by_path proc~json_file_add_real json_file_module::json_file%json_file_add_real proc~json_file_add_real->none~add_by_path proc~json_file_add_real32 json_file_module::json_file%json_file_add_real32 proc~json_file_add_real32->none~add_by_path proc~json_file_add_real32_vec json_file_module::json_file%json_file_add_real32_vec proc~json_file_add_real32_vec->none~add_by_path proc~json_file_add_real_vec json_file_module::json_file%json_file_add_real_vec proc~json_file_add_real_vec->none~add_by_path proc~json_file_add_string json_file_module::json_file%json_file_add_string proc~json_file_add_string->none~add_by_path proc~json_file_add_string_vec json_file_module::json_file%json_file_add_string_vec proc~json_file_add_string_vec->none~add_by_path proc~json_file_remove json_file_module::json_file%json_file_remove proc~json_file_remove->none~remove_if_present proc~json_file_update_integer json_file_module::json_file%json_file_update_integer proc~json_file_update_integer->none~update proc~json_file_update_logical json_file_module::json_file%json_file_update_logical proc~json_file_update_logical->none~update proc~json_file_update_real json_file_module::json_file%json_file_update_real proc~json_file_update_real->none~update proc~json_file_update_string json_file_module::json_file%json_file_update_string proc~json_file_update_string->none~update proc~json_file_valid_path json_file_module::json_file%json_file_valid_path proc~json_file_valid_path->none~valid_path proc~json_file_valid_path_op json_file_module::json_file%json_file_valid_path_op proc~json_file_valid_path_op->none~valid_path proc~json_file_variable_info json_file_module::json_file%json_file_variable_info proc~json_file_variable_info->none~info proc~json_get_path json_value_module::json_core%json_get_path proc~json_get_path->none~info proc~json_is_vector json_value_module::json_core%json_is_vector proc~json_is_vector->none~info proc~json_update_real32->none~update proc~json_update_string_name_ascii json_value_module::json_update_string_name_ascii proc~json_update_string_name_ascii->none~update proc~json_update_string_val_ascii json_value_module::json_update_string_val_ascii proc~json_update_string_val_ascii->none~update proc~json_value_add_member json_value_module::json_core%json_value_add_member proc~json_value_add_member->none~info proc~json_value_reverse json_value_module::json_core%json_value_reverse proc~json_value_reverse->none~info proc~wrap_json_add_real32_by_path json_value_module::wrap_json_add_real32_by_path proc~wrap_json_add_real32_by_path->none~add_by_path proc~wrap_json_add_real32_vec_by_path json_value_module::wrap_json_add_real32_vec_by_path proc~wrap_json_add_real32_vec_by_path->none~add_by_path proc~wrap_json_file_get_alloc_string_vec json_file_module::wrap_json_file_get_alloc_string_vec proc~wrap_json_file_get_alloc_string_vec->none~get~2 proc~wrap_json_file_get_integer json_file_module::wrap_json_file_get_integer proc~wrap_json_file_get_integer->none~get~2 proc~wrap_json_file_get_integer_vec json_file_module::wrap_json_file_get_integer_vec proc~wrap_json_file_get_integer_vec->none~get~2 proc~wrap_json_file_get_logical json_file_module::wrap_json_file_get_logical proc~wrap_json_file_get_logical->none~get~2 proc~wrap_json_file_get_logical_vec json_file_module::wrap_json_file_get_logical_vec proc~wrap_json_file_get_logical_vec->none~get~2 proc~wrap_json_file_get_object json_file_module::wrap_json_file_get_object proc~wrap_json_file_get_object->none~get~2 proc~wrap_json_file_get_real json_file_module::wrap_json_file_get_real proc~wrap_json_file_get_real->none~get~2 proc~wrap_json_file_get_real32 json_file_module::wrap_json_file_get_real32 proc~wrap_json_file_get_real32->none~get~2 proc~wrap_json_file_get_real32_vec json_file_module::wrap_json_file_get_real32_vec proc~wrap_json_file_get_real32_vec->none~get~2 proc~wrap_json_file_get_real_vec json_file_module::wrap_json_file_get_real_vec proc~wrap_json_file_get_real_vec->none~get~2 proc~wrap_json_file_get_string json_file_module::wrap_json_file_get_string proc~wrap_json_file_get_string->none~get~2 proc~wrap_json_file_get_string_vec json_file_module::wrap_json_file_get_string_vec proc~wrap_json_file_get_string_vec->none~get~2 proc~wrap_json_info_by_path json_value_module::wrap_json_info_by_path proc~wrap_json_info_by_path->none~info proc~wrap_json_update_integer json_value_module::wrap_json_update_integer proc~wrap_json_update_integer->none~update proc~wrap_json_update_logical json_value_module::wrap_json_update_logical proc~wrap_json_update_logical->none~update proc~wrap_json_update_real json_value_module::wrap_json_update_real proc~wrap_json_update_real->none~update proc~wrap_json_update_real32 json_value_module::wrap_json_update_real32 proc~wrap_json_update_real32->none~update proc~wrap_json_update_string json_value_module::wrap_json_update_string proc~wrap_json_update_string->none~update proc~wrap_json_valid_path json_value_module::wrap_json_valid_path proc~wrap_json_valid_path->none~valid_path proc~wrap_json_value_remove_if_present json_value_module::wrap_json_value_remove_if_present proc~wrap_json_value_remove_if_present->none~remove_if_present none~add->proc~json_value_add_member proc~json_value_add_integer json_value_module::json_core%json_value_add_integer none~add->proc~json_value_add_integer proc~json_value_add_integer_vec json_value_module::json_core%json_value_add_integer_vec none~add->proc~json_value_add_integer_vec proc~json_value_add_logical json_value_module::json_core%json_value_add_logical none~add->proc~json_value_add_logical proc~json_value_add_logical_vec json_value_module::json_core%json_value_add_logical_vec none~add->proc~json_value_add_logical_vec proc~json_value_add_null json_value_module::json_core%json_value_add_null none~add->proc~json_value_add_null proc~json_value_add_real json_value_module::json_core%json_value_add_real none~add->proc~json_value_add_real proc~json_value_add_real32 json_value_module::json_core%json_value_add_real32 none~add->proc~json_value_add_real32 proc~json_value_add_real32_vec json_value_module::json_core%json_value_add_real32_vec none~add->proc~json_value_add_real32_vec proc~json_value_add_real_vec json_value_module::json_core%json_value_add_real_vec none~add->proc~json_value_add_real_vec proc~json_value_add_string json_value_module::json_core%json_value_add_string none~add->proc~json_value_add_string proc~json_value_add_string_vec json_value_module::json_core%json_value_add_string_vec none~add->proc~json_value_add_string_vec none~get_path->proc~json_get_path none~info~2 json_file_module::json_file%info none~info~2->proc~json_file_variable_info none~remove~2 json_file_module::json_file%remove none~remove~2->proc~json_file_remove none~update~2 json_file_module::json_file%update none~update~2->proc~json_file_update_integer none~update~2->proc~json_file_update_logical none~update~2->proc~json_file_update_real none~update~2->proc~json_file_update_string proc~json_file_update_real32 json_file_module::json_file%json_file_update_real32 none~update~2->proc~json_file_update_real32 none~valid_path~2 json_file_module::json_file%valid_path none~valid_path~2->proc~json_file_valid_path proc~json_file_add_string_path_ascii json_file_module::json_file_add_string_path_ascii proc~json_file_add_string_path_ascii->proc~json_file_add_string proc~json_file_add_string_value_ascii json_file_module::json_file_add_string_value_ascii proc~json_file_add_string_value_ascii->proc~json_file_add_string proc~json_file_add_string_vec_path_ascii json_file_module::json_file_add_string_vec_path_ascii proc~json_file_add_string_vec_path_ascii->proc~json_file_add_string_vec proc~json_file_add_string_vec_vec_ascii json_file_module::json_file_add_string_vec_vec_ascii proc~json_file_add_string_vec_vec_ascii->proc~json_file_add_string_vec proc~json_value_print json_value_module::json_core%json_value_print proc~json_value_print->proc~json_is_vector proc~json_value_print->proc~json_value_print proc~wrap_json_file_add_integer json_file_module::wrap_json_file_add_integer proc~wrap_json_file_add_integer->proc~json_file_add_integer proc~wrap_json_file_add_integer_vec json_file_module::wrap_json_file_add_integer_vec proc~wrap_json_file_add_integer_vec->proc~json_file_add_integer_vec proc~wrap_json_file_add_logical json_file_module::wrap_json_file_add_logical proc~wrap_json_file_add_logical->proc~json_file_add_logical proc~wrap_json_file_add_logical_vec json_file_module::wrap_json_file_add_logical_vec proc~wrap_json_file_add_logical_vec->proc~json_file_add_logical_vec proc~wrap_json_file_add_object json_file_module::wrap_json_file_add_object proc~wrap_json_file_add_object->proc~json_file_add_object proc~wrap_json_file_add_real json_file_module::wrap_json_file_add_real proc~wrap_json_file_add_real->proc~json_file_add_real proc~wrap_json_file_add_real32 json_file_module::wrap_json_file_add_real32 proc~wrap_json_file_add_real32->proc~json_file_add_real32 proc~wrap_json_file_add_real32_vec json_file_module::wrap_json_file_add_real32_vec proc~wrap_json_file_add_real32_vec->proc~json_file_add_real32_vec proc~wrap_json_file_add_real_vec json_file_module::wrap_json_file_add_real_vec proc~wrap_json_file_add_real_vec->proc~json_file_add_real_vec proc~wrap_json_file_add_string json_file_module::wrap_json_file_add_string proc~wrap_json_file_add_string->proc~json_file_add_string proc~wrap_json_file_add_string_vec json_file_module::wrap_json_file_add_string_vec proc~wrap_json_file_add_string_vec->proc~json_file_add_string_vec proc~json_file_update_real32->none~update~2 proc~json_file_update_string_name_ascii json_file_module::json_file_update_string_name_ascii proc~json_file_update_string_name_ascii->none~update~2 proc~json_file_update_string_val_ascii json_file_module::json_file_update_string_val_ascii proc~json_file_update_string_val_ascii->none~update~2 proc~json_print_to_unit json_value_module::json_core%json_print_to_unit proc~json_print_to_unit->proc~json_value_print proc~json_value_add_integer->none~add proc~json_value_add_integer_vec->none~add proc~json_value_add_logical->none~add proc~json_value_add_logical_vec->none~add proc~json_value_add_null->none~add proc~json_value_add_real->none~add proc~json_value_add_real32->none~add proc~json_value_add_real32_vec->none~add proc~json_value_add_real_vec->none~add proc~json_value_add_string->none~add proc~json_value_add_string_name_ascii json_value_module::json_value_add_string_name_ascii proc~json_value_add_string_name_ascii->none~add proc~json_value_add_string_val_ascii json_value_module::json_value_add_string_val_ascii proc~json_value_add_string_val_ascii->none~add proc~json_value_add_string_vec->none~add proc~json_value_add_string_vec_name_ascii json_value_module::json_value_add_string_vec_name_ascii proc~json_value_add_string_vec_name_ascii->none~add proc~json_value_add_string_vec_val_ascii json_value_module::json_value_add_string_vec_val_ascii proc~json_value_add_string_vec_val_ascii->none~add proc~json_value_to_string json_value_module::json_core%json_value_to_string proc~json_value_to_string->proc~json_value_print proc~parse_array json_value_module::json_core%parse_array proc~parse_array->none~add proc~parse_value json_value_module::json_core%parse_value proc~parse_array->proc~parse_value proc~parse_object json_value_module::json_core%parse_object proc~parse_object->none~add proc~parse_object->proc~parse_object proc~parse_object->proc~parse_value proc~wrap_json_file_remove json_file_module::wrap_json_file_remove proc~wrap_json_file_remove->none~remove~2 proc~wrap_json_file_update_integer json_file_module::wrap_json_file_update_integer proc~wrap_json_file_update_integer->none~update~2 proc~wrap_json_file_update_logical json_file_module::wrap_json_file_update_logical proc~wrap_json_file_update_logical->none~update~2 proc~wrap_json_file_update_real json_file_module::wrap_json_file_update_real proc~wrap_json_file_update_real->none~update~2 proc~wrap_json_file_update_real32 json_file_module::wrap_json_file_update_real32 proc~wrap_json_file_update_real32->none~update~2 proc~wrap_json_file_update_string json_file_module::wrap_json_file_update_string proc~wrap_json_file_update_string->none~update~2 proc~wrap_json_file_valid_path json_file_module::wrap_json_file_valid_path proc~wrap_json_file_valid_path->none~valid_path~2 proc~wrap_json_file_variable_info json_file_module::wrap_json_file_variable_info proc~wrap_json_file_variable_info->none~info~2 proc~wrap_json_get_path json_value_module::wrap_json_get_path proc~wrap_json_get_path->none~get_path proc~wrap_json_value_add_integer json_value_module::wrap_json_value_add_integer proc~wrap_json_value_add_integer->none~add proc~wrap_json_value_add_integer_vec json_value_module::wrap_json_value_add_integer_vec proc~wrap_json_value_add_integer_vec->none~add proc~wrap_json_value_add_logical json_value_module::wrap_json_value_add_logical proc~wrap_json_value_add_logical->none~add proc~wrap_json_value_add_logical_vec json_value_module::wrap_json_value_add_logical_vec proc~wrap_json_value_add_logical_vec->none~add proc~wrap_json_value_add_null json_value_module::wrap_json_value_add_null proc~wrap_json_value_add_null->none~add proc~wrap_json_value_add_real json_value_module::wrap_json_value_add_real proc~wrap_json_value_add_real->none~add proc~wrap_json_value_add_real32 json_value_module::wrap_json_value_add_real32 proc~wrap_json_value_add_real32->none~add proc~wrap_json_value_add_real32_vec json_value_module::wrap_json_value_add_real32_vec proc~wrap_json_value_add_real32_vec->none~add proc~wrap_json_value_add_real_vec json_value_module::wrap_json_value_add_real_vec proc~wrap_json_value_add_real_vec->none~add proc~wrap_json_value_add_string json_value_module::wrap_json_value_add_string proc~wrap_json_value_add_string->none~add proc~wrap_json_value_add_string_vec json_value_module::wrap_json_value_add_string_vec proc~wrap_json_value_add_string_vec->none~add proc~assign_json_file_to_string json_file_module::json_file%assign_json_file_to_string proc~assign_json_file_to_string->proc~json_value_to_string proc~json_file_print_to_string json_file_module::json_file%json_file_print_to_string proc~json_file_print_to_string->proc~json_value_to_string proc~parse_value->proc~parse_array proc~parse_value->proc~parse_object proc~json_parse_file json_value_module::json_core%json_parse_file proc~json_parse_file->proc~parse_value proc~json_parse_string json_value_module::json_core%json_parse_string proc~json_parse_string->proc~parse_value none~deserialize json_value_module::json_core%deserialize none~deserialize->proc~json_parse_string none~load json_value_module::json_core%load none~load->proc~json_parse_file proc~json_file_load json_file_module::json_file%json_file_load proc~json_file_load->none~load proc~json_file_load_from_string json_file_module::json_file%json_file_load_from_string proc~json_file_load_from_string->none~deserialize proc~wrap_json_parse_string json_value_module::wrap_json_parse_string proc~wrap_json_parse_string->none~deserialize none~deserialize~2 json_file_module::json_file%deserialize none~deserialize~2->proc~json_file_load_from_string proc~assign_string_to_json_file json_file_module::json_file%assign_string_to_json_file proc~assign_string_to_json_file->none~deserialize~2 proc~initialize_json_file_from_string json_file_module::initialize_json_file_from_string proc~initialize_json_file_from_string->none~deserialize~2 proc~initialize_json_file_from_string_v2 json_file_module::initialize_json_file_from_string_v2 proc~initialize_json_file_from_string_v2->none~deserialize~2 proc~wrap_json_file_load_from_string json_file_module::wrap_json_file_load_from_string proc~wrap_json_file_load_from_string->none~deserialize~2 interface~json_file json_file_module::json_file interface~json_file->proc~initialize_json_file_from_string interface~json_file->proc~initialize_json_file_from_string_v2 proc~wrap_assign_string_to_json_file json_file_module::wrap_assign_string_to_json_file proc~wrap_assign_string_to_json_file->proc~assign_string_to_json_file proc~wrap_initialize_json_file_from_string json_file_module::wrap_initialize_json_file_from_string proc~wrap_initialize_json_file_from_string->proc~initialize_json_file_from_string proc~wrap_initialize_json_file_from_string_v2 json_file_module::wrap_initialize_json_file_from_string_v2 proc~wrap_initialize_json_file_from_string_v2->proc~initialize_json_file_from_string_v2

Source Code

    subroutine json_value_get_child_by_index(json, p, idx, child, found)

    implicit none

    class(json_core),intent(inout)      :: json
    type(json_value),pointer,intent(in) :: p      !! object or array JSON data
    integer(IK),intent(in)              :: idx    !! index of the child
                                                  !! (this is a 1-based Fortran
                                                  !! style array index).
    type(json_value),pointer            :: child  !! pointer to the child
    logical(LK),intent(out),optional    :: found  !! true if the value was found
                                                  !! (if not present, an exception
                                                  !! will be thrown if it was not
                                                  !! found.  If present and not
                                                  !! found, no exception will be
                                                  !! thrown).

    integer(IK) :: i  !! counter

    nullify(child)

    if (.not. json%exception_thrown) then

        if (associated(p%children)) then

            ! If getting first or last child, we can do this quickly.
            ! Otherwise, traverse the list.
            if (idx==1) then

                child => p%children  ! first one

            elseif (idx==p%n_children) then

                if (associated(p%tail)) then
                    child => p%tail  ! last one
                else
                    call json%throw_exception('Error in json_value_get_child_by_index:'//&
                                              ' child%tail is not associated.',found)
                end if

            elseif (idx<1 .or. idx>p%n_children) then

                call json%throw_exception('Error in json_value_get_child_by_index:'//&
                                          ' idx is out of range.',found)

            else

                ! if idx is closer to the end, we traverse the list backward from tail,
                ! otherwise we traverse it forward from children:

                if (p%n_children-idx < idx) then  ! traverse backward

                    child => p%tail

                    do i = 1, p%n_children - idx

                        if (associated(child%previous)) then
                            child => child%previous
                        else
                            call json%throw_exception('Error in json_value_get_child_by_index:'//&
                                                      ' child%previous is not associated.',found)
                            nullify(child)
                            exit
                        end if

                    end do

                else  ! traverse forward

                    child => p%children

                    do i = 1, idx - 1

                        if (associated(child%next)) then
                            child => child%next
                        else
                            call json%throw_exception('Error in json_value_get_child_by_index:'//&
                                                      ' child%next is not associated.',found)
                            nullify(child)
                            exit
                        end if

                    end do

                end if

            end if

        else

            call json%throw_exception('Error in json_value_get_child_by_index:'//&
                                      ' p%children is not associated.',found)

        end if

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

    else
        if (present(found)) found = .false.
    end if

    end subroutine json_value_get_child_by_index