본관은 광산(光山). 자는 위사(渭師), 호는 경대(經臺)·노헌(魯軒). 김장생(金長生)의 9대손이며, 김상악(金相岳)의 증손으로, 할아버지는 김기진(金箕晉)이고, 아버지는 김재곤(金在崑)이며, 어머니는 유경주(兪擎柱)의 딸이다. 정약용(丁若鏞)·홍석주(洪奭周)·김매순(金邁淳)의 문인이다.
1827년 진사가 되고 1859년(철종 10) 군수로서 증광 문과에 갑과로 급제, 1860년 대사간을 지냈다. 고종 때에 들어서도 1864년(고종 1) 대사간을 거쳐 이조참의·승지·대사성·이조참판·예문제학·홍문제학·도총관·공조판서·예조판서·경기도관찰사·평안도관찰사·대사헌 등의 중요직을 역임하였다.
1882년 시강원우부빈객(侍講院右副賓客)과 우참찬·좌참찬·판돈녕부사 등을 지냈으며, 1885년고종에게 세 차례나 치사(致仕)하기를 청하여 봉조하(奉朝賀)가 되었다. 그 뒤 제술관 등을 지내고, 1887년에는 소과의 시관(試官)을 맡아보았다. 문장에 능하여 왕실에서 필요한 전문(箋文)·죽책문(竹冊文: 대나무 간책에 새기는 옥책문)·옥책문(玉冊文: 제왕·후비 등의 호를 올릴 때 쓰는 德을 읊은 글)·행장·악장문(樂章文) 등을 저술하였다. 시호는 문헌(文獻)이다. 문집으로 『경대집(經臺集)』이 있다.