Edit in JSFiddle

// Я использую JSON.stringify() только чтобы получитьь строку
// Это не часть демонстрации
const jsonString = JSON.stringify([
  {
    "name": "Mars",
    "cost": "$2.25", // мы хотим получить цену как число
    "tasty": "true", // а это должно быть логического типа
  },
  {
    "name": "Jelly",
    "cost": "$0.20",
    "tasty": "true",
  },
  {
    "name": "Birch",
    "cost": "$20",
    "tasty": "false",
  },
]);

// Второй параметр в JSON.parse() - функция, которой
// передаются все пары ключ:значение
const parsedData = JSON.parse(jsonString, (key, value) => {
  if (key === 'cost') return Number(value.replace('$', ''));
  if (value === 'true') return true;
  if (value === 'false') return false;
  
  return value;
});

// Второй параметр в JSON.stringify() нам не инетересен, 
// третий параметр - количество пробелов, использующихся
// в качестве отступов
document.querySelector('#output').textContent = JSON.stringify(parsedData, null, 2);
<pre id="output"></pre>