텍스트 상자에 표시하기 위해 JSON을 아름답게 하려면 어떻게 해야 합니까?
C#으로 JSON을 아름답게 하려면 어떻게 해야 하나요?결과를 텍스트 상자 컨트롤로 인쇄하고 싶습니다.
이 경우 JavaScript Serializer를 사용할 수 있습니까?아니면 JSON.net을 사용해야 합니까?꼭 해야 하는 경우가 아니라면 스트링을 역직렬화하는 것을 피하고 싶습니다.
이 파티에는 조금 늦었지만 Json을 사용하여 역직렬화하지 않고 Json을 미화(또는 축소)할 수 있습니다.네트워크:
JToken parsedJson = JToken.Parse(jsonString);
var beautified = parsedJson.ToString(Formatting.Indented);
var minified = parsedJson.ToString(Formatting.None);
편집: 퍼포먼스에 대한 코멘트에서 논의한 내용을 팔로우하여 Bench Mark를 사용하여 측정했습니다.순액 및 추가 할당 비용이 발생합니다.JToken.Parse, 그리고 매우 적은 시간 증가:
JSON이랑.Net 특정 포맷으로 출력을 아름답게 만들 수 있습니다.
dotnetfiddle에서 데모합니다.
코드
public class Product
{
public string Name {get; set;}
public DateTime Expiry {get; set;}
public string[] Sizes {get; set;}
}
public void Main()
{
Product product = new Product();
product.Name = "Apple";
product.Expiry = new DateTime(2008, 12, 28);
product.Sizes = new string[] { "Small" };
string json = JsonConvert.SerializeObject(product, Formatting.None);
Console.WriteLine(json);
json = JsonConvert.SerializeObject(product, Formatting.Indented);
Console.WriteLine(json);
}
산출량
{"Name":"Apple","Expiry":"2008-12-28T00:00:00","Sizes":["Small"]}
{
"Name": "Apple",
"Expiry": "2008-12-28T00:00:00",
"Sizes": [
"Small"
]
}
새로운 시스템을 사용하여 역직렬화하지 않고 JSON을 처리할 수 있습니다.text.Json 네임스페이스.json 종속성을 추가하지 않도록 합니다.NET. 이것은 Stuartd의 간단한 대답만큼 간단하지 않다는 것을 인정한다.
using System.IO;
using System.Text;
using System.Text.Json;
public static string BeautifyJson(string json)
{
using JsonDocument document = JsonDocument.Parse(json);
using var stream = new MemoryStream();
using var writer = new Utf8JsonWriter(stream, new JsonWriterOptions() { Indented = true });
document.WriteTo(writer);
writer.Flush();
return Encoding.UTF8.GetString(stream.ToArray());
}
문서에는 네임스페이스에서 하위 수준 유형을 사용하는 방법에 대한 더 많은 예가 나와 있습니다.
ShouldSerializeContractResolver.cs
public class ShouldSerializeContractResolver : DefaultContractResolver
{
public static readonly ShouldSerializeContractResolver Instance = new ShouldSerializeContractResolver();
protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization)
{
JsonProperty property = base.CreateProperty(member, memberSerialization);
return property;
}
}
var beautifyJson= Newtonsoft.Json.JsonConvert.SerializeObject(data, new JsonSerializerSettings()
{
ContractResolver = ShouldSerializeContractResolver.Instance,
NullValueHandling = NullValueHandling.Ignore,
Formatting = Formatting.Indented
});
당신은 위의 코드로 json을 아름답게 할 수 있습니다.
에서 JSON을 포맷하는 방법을 문의하는 고객용.C#을 사용하고 있는 NET 및 한 줄 애호가에게 즉시 사용하는 방법을 보고 싶다.들여쓰기된 JSON 문자열의 한 줄 코드를 다음에 나타냅니다.
시리얼화할 JSON 포메터 또는 파서는 다음 2가지가 있습니다.
뉴턴소프트 존슨.넷 버전:
using Newtonsoft.Json;
var jsonString = JsonConvert.SerializeObject(yourObj, Formatting.Indented);
.Net 7 버전:
using System.Text.Json;
var jsonString = JsonSerializer.Serialize(yourObj, new JsonSerializerOptions { WriteIndented = true });
string formattedJson = System.Text.Json.Nodes.JsonNode.Parse(json).ToString();
언급URL : https://stackoverflow.com/questions/6178544/how-can-i-beautify-json-for-display-in-a-textbox
'programing' 카테고리의 다른 글
| UTF-8 문자 인코딩이 json_encode()와 경쟁합니다. (0) | 2023.03.17 |
|---|---|
| Woocommerce:카테고리에서 제품을 추가한 후 카트로 자동 리디렉션 (0) | 2023.03.17 |
| Mongoose의 '_v' 필드는 무엇입니까? (0) | 2023.03.17 |
| Check in ReactJS 체크박스를 디폴트로 설정하는 방법 (0) | 2023.03.17 |
| 'EventTarget' 유형에 'value' 속성이 없습니다. (0) | 2023.03.17 |
