My top choices are John David and John Gray and John Preston.
If you are ever calling your child his full name (like if he's in trouble of something, lol!) then I feel like you'd say John instead of Jack, right? So even though you might call him Jack in daily life, if you are going to ever use his middlename you'd likely use it with John. So I think the best way to think about how the middlename sounds is to say it with John. My daughter's nickname that is used daily is Jo or Jojo. But if I am saying her full name for emphasis or whatever, we say Johanna Joy.