본관은 강릉(江陵). 김시환(金始煥)의 증손으로, 할아버지는 김상벽(金尙壁)이고, 아버지는 김정진(金鼎鎭)이며, 어머니는 민사홍(閔師弘)의 딸이다.
어려서부터 학문에 힘써, 1798년(정조 22) 생원으로 제술부문에서 1등함으로써 전시에 직부(直赴)하여 춘당대친시(春塘臺親試)에 을과로 급제하였다.
그 뒤 1807년(순조 7) 홍문관부교리(弘文館副敎理)가 되고 1808년에는 서장관(書狀官)으로서 청나라에 건너가 양국 간의 현안문제를 수습하고 돌아왔다. 1810년 부교리로 있으면서 과거시험과 기타 국정 전반에 대한 개혁방안을 상소하여 왕으로부터 칭찬을 받고, 그에 대한 보상으로 비단을 받았다.
1813년 강계부사(江界府使)로 나가 성실히 업무를 수행한 결과 가자(加資)되었으며, 그 뒤 의주부윤(義州府尹)과 개성유수(開城留守)를 거쳐, 1827년에는 함경도관찰사가 되었다.