There is not really a true good style, it depends on the context and on your needs.
Use :
String salary = company.getPerson(id).getData().getSalary();
String postcode = company.getPerson(id).getData().getPostCode();
If you need to improve your memory usage.
Else use :
Data data = company.getPerson(id).getData();
String salary = data.getSalary();
String postcode = data.getPostCode();
If you want to improve performance.
For readability it's too subjectives for me. There are both as much readable honestly.
The 2nd example has the advantages of refractoring company.getPerson(id) and the variable also allow to perform some verification without having to call company.getPerson(id) again. I often prefer this kind of style, but, again, depending on the needs the first solution can be better if getPersonne(id) and getData() can't return null.
getPersonandgetDatatwice rather than once. Furthermore, what if the object changes, and the two lines get different people?