The Bayer Leverkusen man grabbed an 84th-minute winner to get Ottmar Hitzfeld's side back to winning ways at the Swissporarena
Switzerland largely dominated proceedings in the opening half and Blerim Dzemaili fired the first warning when he shot narrowly wide from 20 yards.
The hosts went even closer after 22 minutes when Mariappa directed Stephan Lichtsteiner's cross towards his own goal, forcing a fine point-blank save from Jamaica goalkeeper Blake.
Despite their control of the game, Switzerland almost fell behind when Rodolph Austin's effort deflected off Philippe Senderos. Swiss keeper Diego Benaglio was left wrong-footed, but the ball trickled just past the post.
The game followed a similar pattern after the break with Switzerland looking to dictate the tempo, but they often attempted one pass too many and failed to get shots away.
Admir Mehmedi nearly provided the spark to light up what was becoming an increasingly tepid encounter on the hour mark, the forward cutting in from the left before sending in a right-footed shot that only just cleared the crossbar.
Switzerland continued to create the better chances after the break, with Drmic wasting a great opportunity when he cleared the crossbar from close-range with the goal gaping.
Drminc made amends, however, keeping his composure to prod past Andre Blake late on.
Hitzfeld will hope his men prove more clinical in Tuesday's final warm-up fixture against Peru, before they open their World Cup campaign against Ecuador on June 15.