次のコードは複雑に見えるかもしれませんが、実際には単純です (コピー/貼り付けの互換性があります)。
import java.io.IOException;
import java.util.Map;
import org.junit.Test;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.core.JsonGenerationException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
public class JacksonTest {
    @Test
    public void test_complex_json_to_object() throws JsonGenerationException, JsonMappingException, IOException {
        final String json = "{\"source[longitude]\":[\"26.3843435\"],\"source[latitude]\":[\"174.78830093\"]}";
        final ObjectMapper m = new ObjectMapper();
        @SuppressWarnings("unchecked")
        final Map<String, Object> json_map = m.readValue(json, Map.class);
        m.convertValue(json_map, Data.class);
    }
    public static class Location {
        public double   latitude;
        public double   longitude;
    }
    public static class Data {
        public Location location;
        @JsonProperty(value = "source[longitude]")
        public void setSource__longitude(final String[] data) { // Invoked.
            System.err.println("longitude");
        }
        @JsonProperty(value = "source[latitude]")
        public void setSource__latitude(final String[] data) { // Invoked.
            System.err.println("latitude");
        }
        public void setLocation(final String[] data) { // NOT Invoked!
            System.err.println("latitude");
        }
    }
}
JSON 文字列は固定です。外部サービスからマップとして取得するため、Dataオブジェクトに変換する前に Map に変換します。
latitudeとlongitudeセッターをオブジェクト内で定義したいと思いLocationますが、現在 (内で) 強制されているわけではありませんData。
問題は、ジャクソンがそれが実際にであることを理解していないことです。source[longitude]source.longitude
それを解決する方法はありますか?