I would prefer source = transfer["source"] and then using source.
One can think it's premature optimization but the main goal is to be DRY and avoid error.
If there is a spelling mistake, let's say 
   
    transfer["faction"]

It's really hard to spot especially because the other similar lines are OK.
Also if we change the JSON, you only need to modify the key once ...