Рабочая библиотека Json для Javascript?

Я пошел в 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 испортился - я вроде как думаю, что испортил его, но я пытался делать всевозможные вещи, чтобы помочь с синтаксическим анализом, например, экранирование / снятие экранирования и т. д. Перед сериализацией / десериализация.

Что происходит, когда вы eval ('(' + jsonObject + ')')? Это поможет определить, в чем проблема.

Joel Anair 18.11.2008 20:36

Я удалил экранирование ', поскольку теперь я выводю json как объект, а не строку - затем оцениваю, как вы опубликовали, и получаю следующее: Ошибка компиляции Microsoft JScript: Ожидается'] '- так что мой сериализатор .net испортился?

Per Hornshøj-Schierbeck 18.11.2008 20:53
Смотрите также:stackoverflow.com/questions/998832
dreftymac 12.02.2010 07:21

@JoelAnair, вы должны нет использовать eval для синтаксического анализа JSON!

Alex 29.01.2013 20:35

@Alex Я согласен с тем, что вы не должны использовать eval для анализа JSON в производственном коде. Однако это может быть полезно для поиска проблем с синтаксисом в блоках JSON. Спасибо, что указали на это.

Joel Anair 01.07.2013 17:05
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
5
6 184
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Это может быть зацепкой ...

http://binnyva.blogspot.com/2006/10/invalid-json.html

И если вы сериализуете, возможно, защитите себя, сериализуя на ' и с '.

Но json заключен в двойные кавычки, а одинарные кавычки, которые я использую, предназначены для определения строки json. К счастью, мне не нужно (как, например, в C#) выражать мою строку в двойных кавычках (или мне пришлось бы избегать каждой двойной кавычки в json! Фу :)

Per Hornshøj-Schierbeck 18.11.2008 20:38

Я тоже думал об этом, но разве это не должно быть задачей сериализатора .net json и десериализатора javascript json? Я имею в виду, что использую готовые объекты, поэтому мне не нужно выполнять (де) сериализацию.

Per Hornshøj-Schierbeck 18.11.2008 20:48
Ответ принят как подходящий

Хорошо, я решил проблему. На самом деле подсказка, которую Джоэл дал мне в комментарии к моему вопросу, чтобы попытаться оценить его, вместо этого заставила меня думать, что я могу доверять этому json, я пытаюсь проанализировать / eval, и, поскольку я знаю это во время создания страницы, почему не закодируйте его жестко на веб-страницу КАК объект - без экранирования кавычек или чего-то еще, без оценки и, что лучше всего, без строк: P

Так что спасибо вам обоим, Джоэл, и вашему наставнику :)

Рад слышать, что вы решили проблему. Как отметил Алекс в своем комментарии, не рекомендуется использовать eval для чего-либо в реальном коде, но это может быть полезно для отладки, если вы работаете с надежным JSON.

Joel Anair 01.07.2013 17:07

Другие вопросы по теме