JSFiddle - React, Tailwind, and code Playground

JavaScript

String.prototype.isJSON = function() {
  if (this == null) // ошибочный .call
    return false;

  var str = this;

  str = str.replace(/\s/g, '').replace(/\n|\r/, '');

  if (str == '')
    return false;

  // вот это спиздил с github.com/joaquimserafim/is-json
  if (/^\{(.*?)\}$/.test(str))
    return /"(.*?)":(.*?)/g.test(str);

  if (/^\[(.*?)\]$/.test(str)) {
    return str.replace(/^\[/, '')
      .replace(/\]$/, '')
      .replace(/\},\{/g, '}\n{')
      .split(/\n/)
      .map(function (s) { return isJSON(s); })
      .reduce(function (prev, curr) { return !!curr; });
  }

  // а всё ниже - писал сам
  // ибо оригинал не понимает примитивов
  if (/^(true|false|null)$/.test(str))
    return true;

  if (/^-?(0|[1-9]+[0-9]*)(\.\d+)?(e[+-]?[0-9]+)?$/i.test(str)) // RegExp построен согласно описанию типа number на http://json.org
    return true;

  if (str.startsWith('"') && str.endsWith('"') && !/[^\\]"/.test(str.slice(1, -1))) // это ещё нужно будет допилить
    return true;

  return false;
};