itsathere Ответов: 2

Удалите лишнее пространство в строке json


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

Как показано ниже

[{"type":"text","label":"FirstName","name":"firstname","subtype":"text","className":"redform-control"},{"type":"select","label":"Profession","className":"form-control","name":"profession","values":[{"label":"StreetSweeper","value":"StreetSweeper"},{"label":"BrainSurgeon","value":"BrainSurgeon"}]},{"type":"textarea","label":"ShortBio:","className":"form-control","name":"short-bio","subtype":"textarea","rows":"4"}]


Я пробовал, но он удаляет все пробелы внутри или как
"label":"First Name"
преобразуется в
"label":"FirstName"


Мне это нужно в одной строке строки, но внутри перевернутой запятой данные не будут затронуты.

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

var content = Regex.Replace(jsonContent, @"\s+", string.Empty); 

Afzaal Ahmad Zeeshan

Вы создаете этот сериализатор JSON? Потому что если кто-то другой сериализует это, то он должен позаботиться об этой части.

Если вы делаете это, то удалите все пробелы во время синтаксического анализа.

itsathere

Нет, я его не строю. Я получаю формат json и вставляю его в базу данных, а затем снова пытаюсь использовать этот json и получаю исключение.

F-ES Sitecore

Вы говорите, что хотите удалить пробелы, а также хотите, чтобы он был на одной строке, так что же вы хотите удалить пробелы или разрывы строк?

Несмотря на это, это один из тех вопросов, где кажется, что вы пытаетесь решить неправильную проблему. Если вы правильно десериализуете свой json, то не должно иметь значения, что там есть пробелы или разрывы строк.

itsathere

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

F-ES Sitecore

использовать

s = s.заменить("\r\n", "")

чтобы избавиться от разрывов строк, см. Решение 1 для пробелов

2 Ответов

Рейтинг:
8

OriginalGriff

Обычно я бы позволил СЕРИАЛИЗАТОРУ JSON сделать это, но то, как вы скажете ему это сделать, будет зависеть от используемого вами сериализатора.
Но вы можете минимизировать данные JSON с помощью регулярного выражения: Минимизировать отступ в строку JSON .Продажи - переполнение стека[^]


Рейтинг:
19

CHill60

Эта тема c# - csharp удаляет пробелы, если только они не заключены в кавычки, игнорируя экранированные кавычки[^] предлагает использовать парсер JSON, чтобы сделать это за вас, или Wiktor предлагает вместо этого это регулярное выражение

var content = Regex.Replace(jsonContent, @"(""[^""\\]*(?:\\.[^""\\]*)*"")|\s+", "$1");

Есть несколько статей здесь, на СР повторного парсинга JSON, который может помочь
От нуля до героя в JSON с C#[^]
Динамический парсер JSON[^]
и возможно Десериализация JSON с помощью C#[^]