본관은 광산(光山). 자는 계명(啓明). 서울 출생. 할아버지는 김장생(金長生)이고, 아버지는 참판 김반(金槃)이며, 어머니는 연산서씨(連山徐氏)로 서주(徐澍)의 딸이다. 송시열(宋時烈)의 문인이다.
1646년(인조 24) 진사시에 합격한 뒤 1662년(현종 3) 증광 문과에 갑과로 급제하였다. 이듬해 집의(執義)가 되고 1664년 형조참의·동부승지, 1666년 호조참의를 거쳐 대사간·원양도관찰사(原襄道觀察使)와 1672년 대사헌을 지냈다.
이조참의를 거쳐 1674년 예조참판 때, 인선왕후(仁宣王后)에 대한 자의대비(慈懿大妃)의 복상문제(服喪問題)로 서인 송시열 등과 함께 대공설(大功說: 9개월)을 주장하였으나, 남인 허목(許穆) 등의 기년설(朞年說)이 채택되자 양성(陽城)에 유배되었다가, 이듬해 전리(田里: 벼슬길을 떠난 재야)로 풀려나와 일생을 마쳤다.