JSON.parse: конец данных после значения свойства в объекте в строке 61 столбца 2 данных JSON - PullRequest
0 голосов
/ 10 июля 2019

Я портирую расширение Google Chrome, чтобы оно стало дополнением Firefox.В конце концов, я получил временную надстройку, но мне нужно было иметь идентификатор, чтобы сохранить его в файле (что я и хочу сделать).Я прошел через все это, но теперь у меня проблемы с закрытием manifest.json.Когда я пытаюсь закрыть json, Firefox выдает ошибку, указанную в названии.

Пробовал много различных форм закрытия скобок, таких как:

 ]
}

]}

}

и другие.

],
  "permissions": [
    "storage",
    "*://www.crunchyroll.com/*",
    "*://*.vrv.co/*",
    "*://*.dlvr1.net/*",
    "*://*.akamaized.net/*"
  ]
}

Как сказано в заголовке, я получаю ошибки в закрывающей скобке.Пожалуйста, извините, если это действительно глупая вещь, которую я не могу упустить, я программирую на Lua, а веб-разработка - это не моеЭтот блок кода должен быть всем, что вам нужно, чтобы воспроизвести проблему, но, опять же, я новичок в этом вопросе, поэтому дайте мне знать, если нужно больше.Я также новичок в переполнении стека, поэтому я хотел, чтобы он был минимальным, как и было запрошено.

Он должен быть в состоянии загрузить Firefox, но он дает мне сообщение об ошибке, показанное в заголовке.

Весь файл JSON находится здесь:

{ "browser_specific_settings": {
    "gecko": {
      "id": "ihegfgnkffeibpmnajnoiemkcmlbmhmi",
      "strict_min_version": "42.0",
      "strict_max_version": "*",
   "manifest_version": 2,
  "name": "Crunchyroll HTML5",
  "version": "0.14.4",
  "description": "A fully fledged HTML5 player for Crunchyroll.",
  "author": "Jeppe Rune Mortensen <jepperm@gmail.com>",
  "icons": {
    "16": "assets/icon16.png",
    "32": "assets/icon32.png",
    "48": "assets/icon48.png",
    "64": "assets/icon64.png",
    "96": "assets/icon96.png",
    "128": "assets/icon128.png"

  },
  "background": {
    "scripts": [
      "vendor/browser-polyfill.min.js",
      "background.js"
    ]
  },
  "content_scripts": [
    {
      "matches": [
        "*://www.crunchyroll.com/*"
      ],
      "js": [
        "vendor/browser-polyfill.min.js",
        "patch.js",
        "content-script.js"
      ],
      "run_at": "document_start"
    },
    {
      "all_frames": true,
      "matches": [
        "*://www.crunchyroll.com/affiliate_iframeplayer*"
      ],
      "js": [
        "vendor/browser-polyfill.min.js",
        "patch-worker.firefox.js",
        "content-script.js"
      ]
    }
  ],
  "web_accessible_resources": [
    "vendor/JavascriptSubtitlesOctopus/*",
    "fonts/*"
  ],
  "permissions": [
    "storage",
    "*://www.crunchyroll.com/*",
    "*://*.vrv.co/*",
    "*://*.dlvr1.net/*",
    "*://*.akamaized.net/*"
  ]
}

Ответы [ 2 ]

2 голосов
/ 10 июля 2019

Вы должны посмотреть на спецификацию manifest.json здесь: https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json

Я бы предложил использовать инструмент редактирования JSON, такой как https://jsoneditoronline.org/, для создания своего JSON, таким образом, вы выигралине забудьте добавить правильную пару скобок ...

Теперь, когда я вижу весь файл, кажется, что для "gecko": object отсутствует и} для "browser_specific_settings":

Вот файл со всеми совпавшими скобками.

{ "browser_specific_settings": {
    "gecko": {
      "id": "ihegfgnkffeibpmnajnoiemkcmlbmhmi",
      "strict_min_version": "42.0",
      "strict_max_version": "*"
      }
    },
   "manifest_version": 2,
  "name": "Crunchyroll HTML5",
  "version": "0.14.4",
  "description": "A fully fledged HTML5 player for Crunchyroll.",
  "author": "Jeppe Rune Mortensen <jepperm@gmail.com>",
  "icons": {
    "16": "assets/icon16.png",
    "32": "assets/icon32.png",
    "48": "assets/icon48.png",
    "64": "assets/icon64.png",
    "96": "assets/icon96.png",
    "128": "assets/icon128.png"

  },
  "background": {
    "scripts": [
      "vendor/browser-polyfill.min.js",
      "background.js"
    ]
  },
  "content_scripts": [
    {
      "matches": [
        "*://www.crunchyroll.com/*"
      ],
      "js": [
        "vendor/browser-polyfill.min.js",
        "patch.js",
        "content-script.js"
      ],
      "run_at": "document_start"
    },
    {
      "all_frames": true,
      "matches": [
        "*://www.crunchyroll.com/affiliate_iframeplayer*"
      ],
      "js": [
        "vendor/browser-polyfill.min.js",
        "patch-worker.firefox.js",
        "content-script.js"
      ]
    }
  ],
  "web_accessible_resources": [
    "vendor/JavascriptSubtitlesOctopus/*",
    "fonts/*"
  ],
  "permissions": [
    "storage",
    "*://www.crunchyroll.com/*",
    "*://*.vrv.co/*",
    "*://*.dlvr1.net/*",
    "*://*.akamaized.net/*"
  ]
}
0 голосов
/ 10 июля 2019

РЕДАКТИРОВАТЬ: Пожалуйста, используйте другой ответ.Я неправильно прочитал спецификацию.

РЕДАКТИРОВАТЬ - лучший ответ теперь, когда JSON был предоставлен

Здесь работает JSON, как проверено анализатором, который я связал ниже:

{ "browser_specific_settings": {
    "gecko": {
      "id": "ihegfgnkffeibpmnajnoiemkcmlbmhmi",
      "strict_min_version": "42.0",
      "strict_max_version": "*",
      "manifest_version": 2,
      "name": "Crunchyroll HTML5",
      "version": "0.14.4",
      "description": "A fully fledged HTML5 player for Crunchyroll.",
      "author": "Jeppe Rune Mortensen <jepperm@gmail.com>",
      "icons": {
        "16": "assets/icon16.png",
        "32": "assets/icon32.png",
        "48": "assets/icon48.png",
        "64": "assets/icon64.png",
        "96": "assets/icon96.png",
        "128": "assets/icon128.png"
      },
      "background": {
        "scripts": [
          "vendor/browser-polyfill.min.js",
          "background.js"
        ]
      },
      "content_scripts": [
        {
          "matches": [
            "*://www.crunchyroll.com/*"
          ],
          "js": [
            "vendor/browser-polyfill.min.js",
            "patch.js",
            "content-script.js"
          ],
          "run_at": "document_start"
        },
        {
          "all_frames": true,
          "matches": [
            "*://www.crunchyroll.com/affiliate_iframeplayer*"
          ],
          "js": [
            "vendor/browser-polyfill.min.js",
            "patch-worker.firefox.js",
            "content-script.js"
          ]
        }
      ],
      "web_accessible_resources": [
        "vendor/JavascriptSubtitlesOctopus/*",
        "fonts/*"
      ],
      "permissions": [
        "storage",
        "*://www.crunchyroll.com/*",
        "*://*.vrv.co/*",
        "*://*.dlvr1.net/*",
        "*://*.akamaized.net/*"
      ]
    }
  }
}

По сути, ваша проблема сводится к непоследовательному отступу, затрудняющему определение места проблемы.Фактическая проблема заключалась в том, что в конце файла отсутствовали 2 дополнительные закрывающие скобки }.Вы можете использовать синтаксические анализаторы, как я указал ниже в моем исходном ответе, чтобы попытаться помочь вам отладить эти проблемы.

Оригинальный ответ до предоставления полного JSON

ЕслиВы вводите свой последний бит кода, который вы предоставили на этом веб-сайте, чтобы увидеть, действительно ли он действителен: http://json.parser.online.fr/ Спойлер: он говорит, что это так.Это должно быть вашей первой подсказкой о том, что проблема, на самом деле, не в этом последнем фрагменте, как вы сейчас думаете.Для справки: вот что я скопировал в этот синтаксический анализатор:

{
  "permissions": [
    "storage",
    "*://www.crunchyroll.com/*",
    "*://*.vrv.co/*",
    "*://*.dlvr1.net/*",
    "*://*.akamaized.net/*"
  ]
}

Судя по тому, что вы скопировали, поскольку вы не предоставили нам полный файл JSON, я полагаю, вы включили дополнительную закрывающую скобку } где-то над этим разделом.Это потому, что если вы обращаете внимание на отступ того, что вы скопировали:

],
  "permissions": [
    "storage",
    "*://www.crunchyroll.com/*",
    "*://*.vrv.co/*",
    "*://*.dlvr1.net/*",
    "*://*.akamaized.net/*"
  ]
}

скобка заключительного списка ] имеет тот же отступ, что и скобка закрывающего объекта }.Конечно, это может быть проблемой с тем, как вы скопировали свой код в StackOverflow, но у меня нет других подсказок, из-за того, что вы не предоставили нам остальную часть файла.

...