Dor*_* Do 8 c# indentation protocol-buffers
我需要使用 C#将Google protobuf IMessage 对象保存到 json 文件中。这是示例代码:
using (var input = File.OpenRead(protodatFile))
{
string jsonString = null;
message.MergeFrom(input); //read message from protodat file
JsonFormatter formater = new JsonFormatter(
new JsonFormatter.Settings(false));
jsonString = formatter.Format(message);
System.IO.File.WriteAllText(jsonFile, jsonString);
}
Run Code Online (Sandbox Code Playgroud)
这使用JsonFormatter来自 Google Protobuf 库的。
问题:所有 json 内容都存储在一行中。当文件很大(> 50 MB)时,很难在文本编辑器中打开/查看。
在这里制作缩进 jsonFile 的最佳方法是什么?
作为一种效率极低的解决方法,可以使用 Json.NET 重新格式化 Protobuffer Json:
// Re-Parse the one-line protobuf json string into an object:
object parsed = Newtonsoft.Json.JsonConvert.DeserializeObject(jsonString);
// Format this object as JSON with indentation:
string jsonWithIndent = Newtonsoft.Json.JsonConvert.SerializeObject(parsed, Newtonsoft.Json.Formatting.Indented);
Run Code Online (Sandbox Code Playgroud)
由于最初的问题询问的是 50MB 文件,对于如此大的文件来说,这可能是一个糟糕的解决方案,但考虑到我在JsonFormatter.Settings上找不到任何内容,这就是我所寻求的。