У меня есть эта строка в формате JSON, которую я получаю при запросе к службе. Вот что я получаю в виде обычного текста в jsonResponse:
"{\r\n \"OperationType\": \"SAVE_LINK\",\r\n \"Documents\": [\r\n {\r\n \"DocId\": \"****\",\r\n \"DocVersion\": \"20230429\",\r\n \"Title\": \"Ley Orgánica 10/1995, de 23 de noviembre, del Código Penal\",\r\n \"LinkToInforceVersion\": \"https://localhost:44342/Content/Documento.aspx?params=H4sIAAAAAAAEAE2PwW6EIBCGn6bc2oDaXT1wsW3STTZNs2sfYESiJMhYQKt9-g56KclHJsM35J_vWfut0WuUyiiLI0b0LGwO3TbKxs-aRWiDFJw_nJUgMmKvz3TlREE8Eyci9UqiSsJupRGRZkRyRZJFskXSRclAxRnsKyopUm0W3UArOUPfaV9vVEWMYG-aMpxYGPDnAxbTQzToavBHRNN18vrG0xFlXlRs0T6QIDOe5bzIKjaYfrgS8RgIGrwaPqHX8uKMMvgEYVqZCV_OpFmw9934b9dzjPRlG93xxmCa7HZDS9F2bcJAe8yjdvHiXsDjHLSlBUZYqX83v7rBd8pg9xyPgmfFH91HPct-AQAAWKE\",\r\n \"LinkToVersion\": \"https://localhost:44342/Content/Documento.aspx?params=H4sIAAAAAAAEAE2PwW7DIAyGn2bcNoU2a9MDl3STVqmapjbb3SFWgkRwBiRL9vQzyWVIH7LMZ_j5HtEvFc5RaaMt9RTJi7A4ckuvKj-iiFAHJbPs4agls2PW-sjbnsmZZ-bApF7BnJKwWmlEphmZXJlkmWyZdFkI0HEE-0JayVSbCSuoVSbIN-jLhatIEewNOcNBhI5-3mEyLURDrgS_RTRNo66vWVqy2OcnMaEPLKgv06KLKDrTdlcmbn5A8Lr7gBbVxRlt6AnCMAsTPp1Jo2Dvq_HfLscY-cY6uu1MwDDY5UaWk63aQIG_Mfb84MWdwdMY0HL-Hmbu380vVvTGGeya41Fmu_wP_9FJj30BAAA=WKE\",\r\n \"FireUrl\": null\r\n }\r\n ]\r\n}"
И вот что я вижу, если смотрю с помощью визуализатора JSON
[JSON]: "{
"OperationType": "SAVE_LINK",
"Documents": [
{
"DocId": "LE0000018349",
"DocVersion": "20230429",
"Title": "Ley Orgánica 10/1995, de 23 de noviembre, del Código Penal",
"LinkToInforceVersion": "https://localhost:44342/Content/Documento.aspx?params=H4sIAAAAAAAEAE2PwW6EIBCGn6bc2oDaXT1wsW3STTZNs2sfYESiJMhYQKt9-g56KclHJsM35J_vWfut0WuUyiiLI0b0LGwO3TbKxs-aRWiDFJw_nJUgMmKvz3TlREE8Eyci9UqiSsJupRGRZkRyRZJFskXSRclAxRnsKyopUm0W3UArOUPfaV9vVEWMYG-aMpxYGPDnAxbTQzToavBHRNN18vrG0xFlXlRs0T6QIDOe5bzIKjaYfrgS8RgIGrwaPqHX8uKMMvgEYVqZCV_OpFmw9934b9dzjPRlG93xxmCa7HZDS9F2bcJAe8yjdvHiXsDjHLSlBUZYqX83v7rBd8pg9xyPgmfFH91HPct-AQAAWKE",
"LinkToVersion": "https://localhost:44342/Content/Documento.aspx?params=H4sIAAAAAAAEAE2PwW7DIAyGn2bcNoU2a9MDl3STVqmapjbb3SFWgkRwBiRL9vQzyWVIH7LMZ_j5HtEvFc5RaaMt9RTJi7A4ckuvKj-iiFAHJbPs4agls2PW-sjbnsmZZ-bApF7BnJKwWmlEphmZXJlkmWyZdFkI0HEE-0JayVSbCSuoVSbIN-jLhatIEewNOcNBhI5-3mEyLURDrgS_RTRNo66vWVqy2OcnMaEPLKgv06KLKDrTdlcmbn5A8Lr7gBbVxRlt6AnCMAsTPp1Jo2Dvq_HfLscY-cY6uu1MwDDY5UaWk63aQIG_Mfb84MWdwdMY0HL-Hmbu380vVvTGGeya41Fmu_wP_9FJj30BAAA=WKE",
"FireUrl": null
}
]
}"
Я пытаюсь распечатать его на своей странице .aspx, чтобы он выглядел красиво и хорошо отформатирован. Что-то вроде этого:
{
"OperationType": "SAVE_LINK",
"Documents": [
{
"DocId": "********",
"DocVersion": "20230429",
"Title": "Ley Orgánica 10/1995, de 23 de noviembre, del Código Penal",
"LinkToInforceVersion": "https://localhost:44342/Content/Documento.aspx?params=H4sIAAAAAAAEAE2PwW6EIBCGn6bc2oDaXT1wsW3STTZNs2sfYESiJMhYQKt9-g56KclHJsM35J_vWfut0WuUyiiLI0b0LGwO3TbKxs-aRWiDFJw_nJUgMmKvz3TlREE8Eyci9UqiSsJupRGRZkRyRZJFskXSRclAxRnsKyopUm0W3UArOUPfaV9vVEWMYG-aMpxYGPDnAxbTQzToavBHRNN18vrG0xFlXlRs0T6QIDOe5bzIKjaYfrgS8RgIGrwaPqHX8uKMMvgEYVqZCV_OpFmw9934b9dzjPRlG93xxmCa7HZDS9F2bcJAe8yjdvHiXsDjHLSlBUZYqX83v7rBd8pg9xyPgmfFH91HPct-AQAAWKE",
"LinkToVersion": "https://localhost:44342/Content/Documento.aspx?params=H4sIAAAAAAAEAE2PwW7DIAyGn2bcNoU2a9MDl3STVqmapjbb3SFWgkRwBiRL9vQzyWVIH7LMZ_j5HtEvFc5RaaMt9RTJi7A4ckuvKj-iiFAHJbPs4agls2PW-sjbnsmZZ-bApF7BnJKwWmlEphmZXJlkmWyZdFkI0HEE-0JayVSbCSuoVSbIN-jLhatIEewNOcNBhI5-3mEyLURDrgS_RTRNo66vWVqy2OcnMaEPLKgv06KLKDrTdlcmbn5A8Lr7gBbVxRlt6AnCMAsTPp1Jo2Dvq_HfLscY-cY6uu1MwDDY5UaWk63aQIG_Mfb84MWdwdMY0HL-Hmbu380vVvTGGeya41Fmu_wP_9FJj30BAAA=WKE",
"FireUrl": null
}
]
}
В моем коде сейчас есть это:
var response = await httpClient.GetAsync(url);
response.EnsureSuccessStatusCode();
if (buttonId == "WebPagePopupDownloadLinkButton")
{
var jsonResponse = await response.Content.ReadAsStringAsync();
using (var stringReader = new StringReader(jsonResponse))
using (var stringWriter = new StringWriter())
{
var jsonReader = new JsonTextReader(stringReader);
var jsonWriter = new JsonTextWriter(stringWriter) { Formatting = Formatting.Indented };
jsonWriter.WriteToken(jsonReader);
JsonResultLiteral.Text = stringWriter.ToString();
}
}
И в моем .aspx у меня есть этот литерал для печати текста:
<div> <asp:Literal ID = "JsonResultLiteral" runat = "server" Mode = "PassThrough"/> </div>
При этом печатает именно то, что у меня было вначале, ничего не меняется.
Я получил код здесь. Я также попробовал остальные решения, предложенные в теме, но ни одно из них мне не помогло.
Что происходит в моем случае? Это как-то связано с .aspx?
Было бы здорово, если бы я мог использовать пакет Newtonsoft.Json для решения этой проблемы, но любая помощь приветствуется.
Ни JSON, ни HTML не заботятся о пробелах. Независимо от того, какой отступ вы делаете для JSON, если вы просто внедрите его в HTML, вы увидите длинную строку с символами новой строки, табуляциями и пробелами, замененными одиночными пробелами. Чтобы сохранить пробелы, вам нужно <pre>
В моем случае я использую Visual Studio. Во время отладки я понимаю, что на самом деле я получаю от сервера строку, но с \\r\\n вместо \r\n. Поэтому мне пришлось использовать замену следующим образом: sBuf = sBuf.Replace("\\r\\n", "<br/>");





Ну, вы можете попробовать заменить возврат каретки (\r) и перевод строки (\n) на br, и это, по крайней мере, приведет к разрыву строки.
Следовательно, эта разметка:
<asp:Literal ID = "Literal1" runat = "server"></asp:Literal>
И затем код позади:
// assume sBuf has your json
sBuf = sBuf.Replace("\r\n", "<br/>");
Literal1.Text = sBuf;
И результат теперь такой:
Вы также можете использовать/попробовать текстовое поле с textmode="multiline".
Используйте
<pre></pre>в своем aspx: w3schools.com/tags/tryit.asp?filename=tryhtml_pre Текст в элементе <pre> отображается шрифтом фиксированной ширины, и в тексте сохраняются как пробелы, так и разрывы строк. Текст будет отображаться точно так, как написано в исходном коде HTML.