如何使用JsonSerializer为JSON字符串添加缩进优化显示格式?
JSON字符串格式化的可行方案
.NET 环境下的正确实现
你提到的JsonSerializerOptions.WriteIndented是System.Text.Json库的配置,正确的使用步骤是先解析混乱的JSON,再用带缩进的选项重新序列化:
方法1:序列化/反序列化实现
using System.Text.Json; // 替换为你获取到的原始JSON字符串 string rawJson = "{\"id\":1,\"data\":{\"key\":\"value\"}}"; // 解析JSON为文档对象 JsonDocument jsonDoc = JsonDocument.Parse(rawJson); // 配置缩进选项 JsonSerializerOptions options = new JsonSerializerOptions { WriteIndented = true }; // 生成格式化后的JSON string formattedJson = JsonSerializer.Serialize(jsonDoc, options);
方法2:通过JsonWriter直接写入
如果不想完整序列化对象,也可以用Utf8JsonWriter直接输出格式化内容:
using System.Text.Json; using System.IO; using System.Text; string rawJson = "{\"id\":1,\"data\":{\"key\":\"value\"}}"; JsonDocument jsonDoc = JsonDocument.Parse(rawJson); using MemoryStream stream = new MemoryStream(); using Utf8JsonWriter writer = new Utf8JsonWriter(stream, new JsonWriterOptions { Indented = true }); jsonDoc.WriteTo(writer); writer.Flush(); string formattedJson = Encoding.UTF8.GetString(stream.ToArray());
前端/JavaScript场景
如果是在前端页面展示,直接用原生JSON API即可快速格式化:
// 原始混乱JSON字符串 const rawJson = '{"id":1,"data":{"key":"value"}}'; // 解析后重新序列化,第三个参数为缩进空格数(可按需调整) const formattedJson = JSON.stringify(JSON.parse(rawJson), null, 2);
其他主流语言方案
- Java:使用Jackson库,通过
new ObjectMapper().writerWithDefaultPrettyPrinter().writeValueAsString(jsonNode)实现 - Python:
import json; formatted_json = json.dumps(json.loads(raw_json), indent=2) - PHP:
json_encode(json_decode($raw_json), JSON_PRETTY_PRINT)
内容的提问来源于stack exchange,提问作者Stout
相关产品推荐
相关产品推荐

