My oldest son was obsessed with beans when he was two. He only wanted beans. Breakfast, lunch and dinner. I have no idea how my daughter survived. I don't think she ate anything her entire second year. I learned that as long as the kids were getting one good meal a day, don't sweat the rest. Kids will eat when they are hungry. At this age they eat less and get obsessive. Only offer him foods that you are OK with him eating. If you want him to make healthy choices, only have healthy choices available.
Something else to consider, this might not be a food issue at all. It could be a control issue. I did let my kids have some choices of what they wanted at breakfast or lunch. I decided what was on the menu, they picked. If he wants a food (goldfish or cracker) that is not on the menu, acknowledge that. "Oh. You want goldfish. Yes. Goldfish are yummy. I like them, too. Now is not goldfish time. Let's try carrot sticks."
If he says "no", you say "OK. You don't have to eat right now." And leave it.