Я пошел в http://www.json.org/js.html и загрузил json2.js, думая, что все будет в порядке, после того, как этот сайт окажется на вершине в поиске Google по запросу 'json javascript' - также у них есть этот действительно классный URL :)
Итак, я немного поработал с ним, и это выглядело нормально, но теперь у меня начинаются проблемы с ним - он просто не будет анализировать некоторые вещи, которые я кодирую с помощью сериализатора Newtonsoft JSON .NET. Хорошо, может быть, серализатор .net испортился? Не то, как я это вижу - он создает прекрасную строку javascript, которая выглядит как идеальный json.
Проблема возникает, когда он должен закодировать одинарные кавычки и, возможно, двойные кавычки ». Взгляните на эти примеры (только части полной строки)
{"Id":10651,"Text":"\'69"}
{"Id":184,"Text":"13\""}
Я что-то упускаю? это часть более крупной строки, и все это помещается в переменную javascript, подобную этой
var jsonObject = '[{"Id":46,"Type":2,.....................
Я думаю, он должен избегать одинарной кавычки в строке, чтобы избежать конфликта с моей упаковкой строки в одинарные кавычки, и избегать двойной кавычки, чтобы избежать конфликта с форматом json?
Так что либо я делаю что-то не так, либо json2.js делает что-то неправильно? Или да, возможно, .net json испортился - я вроде как думаю, что испортил его, но я пытался делать всевозможные вещи, чтобы помочь с синтаксическим анализом, например, экранирование / снятие экранирования и т. д. Перед сериализацией / десериализация.
Я удалил экранирование ', поскольку теперь я выводю json как объект, а не строку - затем оцениваю, как вы опубликовали, и получаю следующее: Ошибка компиляции Microsoft JScript: Ожидается'] '- так что мой сериализатор .net испортился?
@JoelAnair, вы должны нет использовать eval для синтаксического анализа JSON!
@Alex Я согласен с тем, что вы не должны использовать eval для анализа JSON в производственном коде. Однако это может быть полезно для поиска проблем с синтаксисом в блоках JSON. Спасибо, что указали на это.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Это может быть зацепкой ...
http://binnyva.blogspot.com/2006/10/invalid-json.html
И если вы сериализуете, возможно, защитите себя, сериализуя на ' и с '.
Но json заключен в двойные кавычки, а одинарные кавычки, которые я использую, предназначены для определения строки json. К счастью, мне не нужно (как, например, в C#) выражать мою строку в двойных кавычках (или мне пришлось бы избегать каждой двойной кавычки в json! Фу :)
Я тоже думал об этом, но разве это не должно быть задачей сериализатора .net json и десериализатора javascript json? Я имею в виду, что использую готовые объекты, поэтому мне не нужно выполнять (де) сериализацию.
Хорошо, я решил проблему. На самом деле подсказка, которую Джоэл дал мне в комментарии к моему вопросу, чтобы попытаться оценить его, вместо этого заставила меня думать, что я могу доверять этому json, я пытаюсь проанализировать / eval, и, поскольку я знаю это во время создания страницы, почему не закодируйте его жестко на веб-страницу КАК объект - без экранирования кавычек или чего-то еще, без оценки и, что лучше всего, без строк: P
Так что спасибо вам обоим, Джоэл, и вашему наставнику :)
Рад слышать, что вы решили проблему. Как отметил Алекс в своем комментарии, не рекомендуется использовать eval для чего-либо в реальном коде, но это может быть полезно для отладки, если вы работаете с надежным JSON.
Что происходит, когда вы eval ('(' + jsonObject + ')')? Это поможет определить, в чем проблема.