user metadata in json format, update the data partly only

You cannot use update_user_meta on its own here. You would need to get_user_meta first, decode your json into an array, update the last_seen element of the array, re-encode it and only then update_user_meta.

Unless there is a good reason not to, I would consider just saving these as serialized data (to avoid the json step), or even restructure your data to be more granular, saving each bit in its own record, eg with a key of 1_1_first_seen, 1_1_last_seen (where the first number is the user ID and the second number is the level) etc, as without this you’re making life very hard for yourself if you ever need to query any of this data in any detailed way.