본관은 광산(光山). 자는 경락(景洛). 아버지는 김재현(金在顯)이나, 김재헌(金在獻)에게 입양되었다.
1874년(고종 11) 증광별시문과에서 병과로 급제하여 바로 홍문관교리에 임명되었다. 그 뒤 부응교(副應敎)·응교 등의 직을 거치면서 문명(文名)을 높였다.
한때 충주목사로 외직에 나아가기도 하였으나 1881년에는 도총부부총관이 되고, 그 뒤 한성부좌윤·이조참판·형조참판·예조참판을 거쳐 대사성이 되었고, 1890년에는 한성부판윤(漢城府判尹)에 올랐다.
이어서 형조판서·공조판서 등의 요직을 거쳤다. 1896년에는 중추원1등의관(中樞院一等議官) 및 칙임관 2등이 되었으며, 이듬해에는 태의원경(太醫院卿)이 되었다. 1901년에는 궁내부특진관이 되었다.