The collision occurred around 10:40 a.m. local time in Sun Valley neighborhood of Los Angeles, the Los Angeles Fire Department said.
The department said 21 people were taken to area hospitals with minor injuries. The driver of the truck was uninjured.
Dozens of firefighters and medical personnel triaged the train's 187 passengers, fire department spokesman Erik Scott said.
Scott said the crash occurred in an intersection and a crossing guard arm appeared to have been snapped.
Fire and Metrolink officials said the five-car, double-decker train suffered very minor damage and was able to continue on its route.
S/SH 11