Display current user metadata on WordPress page

You can try below snippet of code. i have develop shortcode you can take reference from it.

function current_user_data_func( $atts ) {

    extract( shortcode_atts( array(
        'metakey' => '',
        'user_field' => '',
    ), $atts) );
     ob_start();
    if(is_user_logged_in())
    {
        $current_user = wp_get_current_user();

        $c_user_id = $current_user->ID;
        if(!empty($metakey))
        {
            $value = get_user_meta( $c_user_id, $metakey, true); 
            echo $value;
        }

        if(!empty($user_field))
        {
            echo $current_user->{"$user_field"}; 

        }

    }
    else
    {
        echo "User Not Logged In";
    }
  return ob_get_clean();
}
add_shortcode( 'current_user_data', 'current_user_data_func' );

How to use :

User_fields : 
  user_login
  user_email
  user_firstname
  user_lastname
  display_name

# In template
echo do_shortcode( '[current_user_data metakey="nickname"]' );
echo do_shortcode( '[current_user_data user_field="user_email"]' );

#in content 

[current_user_data metakey="first_name"]
[current_user_data user_field="user_email"]

meta key return only single value if you have stored array value in meta key then you have to remove ‘true’ from get_user_meta( $c_user_id, $metakey, true); and get value from that array variable $value.

Let me know if this helps to you!