s yu Ответов: 3

Строка Json недопустима с ошибками


Ниже приведена строка Json
Когда я вставляю его (1-й и последний символы, а именно двойная кавычка, удаляются) в
JSON Formatter & валидатор[^]
для одобрения.
JsonString = "{\"ownerSysId\":\"MyIMG\",\"applicationId\":31000,\"uploadFiles\":[{\"id\":2121,\"path\":\"\\\\jServer.local\\gisprod\\Photos\\engineering\\A01\\A01\\PF(2)\\2019\",\"fileName\":\"\\E029089_02-21-2019_085353.png\",\"bearing\":\"none\",\"createdDate\":\"2019-01-03T08:59\"},{\"id\":2141,\"path\":\"\\\\jServer.local\\gisprod\\Photos\\engineering\\B02\\B02\\SHFT(VB4)\\2017\",\"fileName\":\"\\C020533_02-28-2019_131017.png\",\"bearing\":\"none\",\"createdDate\":\"2017-04-27T12:37\"}]}";

Полученные ошибки таковы
Strings should be wrapped in double quotes.

Используя блокнот, чтобы удалить всю единственную обратную косую черту, текст нравится, что ниже:
{"ownerSysId":"MyIMG","applicationId":31000,"uploadFiles":[{"id":2121,"path":"\\\\jServer.local\\gisprod\\Photos\\engineering\\A01\\A01\\PF(2)\\2019","fileName":"\\E029089_02-21-2019_085353.png","bearing":"none","createdDate":"2019-01-03T08:59"},{"id":2141,"path":"\\\\jServer.local\\gisprod\\Photos\\engineering\\B02\\B02\\SHFT(VB4)\\2017","fileName":"\\C020533_02-28-2019_131017.png","bearing":"none","createdDate":"2017-04-27T12:37\"}]}

он получает подтверждение.
Я пробовал использовать несколько строковых функций для удаления одной обратной косой черты, но это не было эффективно. Я буду признателен, если вы сможете помочь в этом вопросе.

Что я уже пробовал:

Пытался
JsonValue.Replace("\\","")
но не работает
Пытался
JsonValue.TrimStart('\\').TrimEnd('\\')
но не работает

3 Ответов

Рейтинг:
2

Patrice T

Поскольку " и \ имеют особое значение в языках C/C++/C#, они экранируются, когда появляются в исходном коде.
Каждый язык программирования использует этот метод для включения специальных символов в строку исходного кода.
Таким образом, строка json, которую вы видите в исходном коде, - это не то, что находится в исполняемом файле после компиляции.


Рейтинг:
1

megaadam

Ваша последняя строка пропускает закрытие
\"

\"2017-04-27T12:37}]}";


s yu

Вы правы. Но добавил '\"' после \"2017-04-27T12:37 как \"2017-04-27T12:37\"
Все равно получилась ошибка: строки должны быть заключены в двойные кавычки.

Рейтинг:
1

Richard Deeming

Эти обратные косые черты не существуют в вашей строке. Они существуют только в вашем исходном коде.

В зависимости от ваших настроек вы также можете увидеть их в отладчике.

Но если вы выведете строку на консоль, то увидите, что она содержит вполне допустимый JSON:
C# String Escape | онлайн-компилятор C# | .NET Fiddle[^]

string JsonString = "{\"ownerSysId\":\"MyIMG\",...
Console.WriteLine(JsonString);
Выход:
{"ownerSysId":"MyIMG",...