Here's a quick approach using reflection to set fields dynamically. It surely isn't and can't be clean. If I were you, I would use a scripting engine for that (assuming it's safe to do so).
private static void setValueAt(Object target, String path, String value) 
        throws Exception {
    
    String[] fields = path.split("\\.");
    if (fields.length > 1) {
        setValueAt(readField(target, fields[0]), 
                path.substring(path.indexOf('.') + 1), value);
        return;
    }
    Field f = target.getClass()
            .getDeclaredField(path);
    f.setAccessible(true);
    f.set(target, parse(value, f.getType())); // cast or convert value first
}
//Example code for converting strings to primitives
private static Object parse(String value, Class<?> type) {
    if (String.class.equals(type)) {
        return value;
    } else if (double.class.equals(type) || Double.class.equals(type)) {
        return Long.parseLong(value);
    } else if (boolean.class.equals(type) || Boolean.class.equals(type)) {
        return Boolean.valueOf(value);
    }
    return value;// ?
}
private static Object readField(Object from, String field) throws Exception {
    Field f = from.getClass()
            .getDeclaredField(field);
    f.setAccessible(true);
    return f.get(from);
}
Just be aware that there's a lot to improve in this code (exception handling, null checks, etc.), although it seems to achieve what you're looking for (split your input on = to call setValueAt()):
Employee e = new Employee();
e.setOfficial(new Official());
e.setPersonal(new Personal());
e.getOfficial().setSalary(new Salary());
ObjectMapper mapper = new ObjectMapper();
setValueAt(e, "id", "123");
// {"id":"123","personal":{},"official":{"active":false,"salary":{"hourly":0.0,"monthly":0.0,"yearly":0.0}}}
setValueAt(e, "personal.address", "123 Main Street");
// {"id":"123","personal":{"address":"123 Main Street"},"official":{"active":false,"salary":{"hourly":0.0,"monthly":0.0,"yearly":0.0}}}
setValueAt(e, "official.salary.hourly", "100");
// {"id":"123","personal":{"address":"123 Main Street"},"official":{"active":false,"salary":{"hourly":100.0,"monthly":0.0,"yearly":0.0}}}