JQuery / .NET Core JSON не может быть проанализирован - PullRequest
1 голос
/ 15 марта 2019

Вот что я посылаю своему контроллеру:

"[{\" PropertyName \ ": \" fewfewf \ "\ "Key \": \ "ewgwewe \", \ "PrimaryValue \": \ "\", \ "SecondaryValue \": \" \ », \ "TertiaryValue \": \ "\", \ "MinimumValue \": \ "\", \ "MaximumValue \": \ "\"}, {\ "PropertyName \": \ "rwhjyjut \", \ "Ключ \": \ "jtyjyt \", \ "PrimaryValue \": \ "\", \ "SecondaryValue \": \ "\", \ "TertiaryValue \": \ "\", \ "MinimumValue \": \ "\", \ "MaximumValue \": \ "\"}] "

Это то, что я получаю обратно с сервера после того, как проанализирую и снова сериализую его.

enter image description here Я очень смущен, поскольку я ничего не изменил. Когда я пытаюсь разобрать его на стороне Jquery, я получаю эту ошибку:

Uncaught SyntaxError: Неожиданный токен & в JSON в позиции 2

Это код jquery

if ("@Model.FormPropertiesList".length !== 0) {
    console.log($.parseJSON("@Model.FormPropertiesList"));
}

Мне что-то не хватает?

РЕДАКТИРОВАТЬ: Это мой серверный код

var list = JsonConvert.DeserializeObject<List<NewFormPropertyViewModel>>(Input.FormPropertiesList);
Input.FormPropertiesList = JsonConvert.SerializeObject(list);
return View("Create", Input);

Вот как я преобразую строку в JSON

$("#@Html.IdFor(m => m.FormPropertiesList)").val(JSON.stringify(dataSet));

Ответы [ 3 ]

0 голосов
/ 15 марта 2019

У меня была такая проблема при передаче JSON в мой шаблон, а затем в мой js-файл в Django.Когда вы делаете это в Django, вы передаете что-то из представления в контексте, тогда, когда вы находитесь в шаблоне Django, вы делаете что-то вроде

var someName = {{ fromView }};

, и я заключил его в двойные кавычки

var someName = "{{ fromView }}";

поэтому он избегал двойных кавычек в JSON, которые были проанализированы.Я потратил около 2 часов, пытаясь выяснить, что произошло, и мне буквально пришлось просто заменить двойные кавычки на одинарные, потому что он читал его как строку с двойными кавычками, в которой была еще одна строка (строка json) с двойными кавычками

var someName = '{{ fromView }}';

Я бы проверил JSON, чтобы убедиться, что вы не передаете его неправильно и неправильно кодируете / добавляете дополнительные кавычки где-то

0 голосов
/ 15 марта 2019

Строка кодируется в формате HTML.Вы можете использовать @HTML.Raw, чтобы сказать бритве поставить string как есть.Одна из причин, по которой строки кодируются, - в целях безопасности.Скажем, вы пытаетесь отобразить некоторые данные, которые вы только что извлекли из базы данных, и эти данные имеют некоторый «вредоносный» JavaScript, хотя этот код будет безвреден для базы данных, он повлияет на клиента после визуализации представления.Вы можете попробовать:

if ("@Model.FormPropertiesList".length !== 0) {
    console.log(JSON.parse("@HTML.Raw(Model.FormPropertiesList)"));
}
0 голосов
/ 15 марта 2019

Сначала замените "& quot"

var serverrep= "[{&quot;PropertyName&quot;:&quot;fewfewf&quot;,&quot;Key&quot;:&quot;ewgwewe&quot;,&quot;PrimaryValue&quot;:&quot;&quot;,&quot;SecondaryValue&quot;:&quot;&quot;,&quot;TertiaryValue&quot;:&quot;&quot;,&quot;MinimumValue&quot;:&quot;&quot;,&quot;MaximumValue&quot;:&quot;&quot;}]"


var serverRepWithoutQuots=serverrep.replace(/&quot;/g, '"');
console.log(serverRepWithoutQuots)
console.log(JSON.parse(serverRepWithoutQuots))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...