Arizona starter Rubby De La Rosa also went four innings, giving up two runs and two hits. He walked four and struck out five.
Jackson allowed three runs, one earned, and four hits. He walked one and struck out three.
The right-hander has given up seven runs this spring but only one was earned. This time, he was hurt by Castro's throwing error at shortstop.
All the damage against Jackson came in the fourth.
"It wasn't too bad," he said. "They were able to take advantage of some pitches up in the zone."
Jackson, who was 6-15 with a 6.33 ERA last season, remains in the mix for the last spot in the Cubs' rotation along with Travis Wood.
Wood has a 1.80 ERA in three starts, allowing 10 hits while striking out eight and walking only one in 10 innings.
That leaves Jackson having to prove he should start every fifth day either for Chicago or a team willing to trade for a veteran pitcher in the third season of a four-year, $52 million deal.
"I'm trying not to put on pressure and just go out and have fun," Jackson said. "The more pressure you put on yourself, the more serious you take it, the more it feels like a job."
Jackson and Dexter Fowler had RBI doubles for Chicago in the third.
Gerald Laird hit an RBI double during the Diamondbacks' three-run fourth.
Socrates Brito's run-scoring single sparked a five-run eighth for the Diamondbacks. Brito tied the game with his single off Anthony Carter, and Chris Owings added an RBI single through a drawn-in infield.
Arizona has won four straight.
Jackson started strong, retiring nine of the Diamondbacks' first 10 hitters as the Cubs opened a 2-0 lead. But that changed in the fourth, when Arizona parlayed a single, two long doubles and a costly fielding error by Castro into a 3-2 lead.
"I had a couple of times when I was in a situation where I left a couple of balls up and gave up a couple of hits," Jackson said.
Jackson threw 38 of his 58 pitches for strikes and needed 25 pitches to escape the fourth.
"I was able to come out and pound the zone for the most part. I got into a couple of situations I would have liked to be reversed as far as the ball-strike count," Jackson said.
Cubs: Jackson helped his own cause with an RBI double off the left-center wall in the third. "Sometimes you close your eyes, get lucky and help yourself out," he said.
Diamondbacks: De La Rosa also got off to a solid start before giving up consecutive doubles in the third. "Some of the walks were on purpose," he said. "It wasn't like I lost my location like the last time. I'm trying to attack."
In a minor league game earlier in the day, RHP Chase Anderson allowed four runs — three earned — over five innings.
Cubs: 3B Kris Bryant was the DH in a "B'' game and homered. Bryant hasn't played third base since March 12 because of right shoulder fatigue. During that span, however, he has homered three times — twice on Saturday and again in the "B'' game Thursday. Bryant has spent the week in the center of a storm over whether he will begin the season in Chicago and start his service-time clock or spend a couple of weeks in Triple-A instead.
Diamondbacks: RHP Daniel Hudson was feeling good after throwing two innings against minor league hitters on Wednesday, manager Chip Hale said. Hale said time still remains in case the club decides to stretch out Hudson as a starter rather than keep him in the bullpen, where he pitched late last season. Hudson has had two Tommy John surgeries on his right elbow. He appeared in three games last season, allowing four runs and four hits in 2 2-3 innings.
Cubs: LHP Travis Wood starts against the Chicago White Sox.
Diamondbacks: RHP Trevor Cahill faces Milwaukee.
All content copyright ©2015 Daily Journal, a division of Home News Enterprises unless otherwise noted.