gpt4 book ai didi

c# - 有什么方法可以将 google protobuf 消息转换为带缩进的 json?

转载 作者:行者123 更新时间:2023-11-30 12:20:30 25 4
gpt4 key购买 nike

我需要使用 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);
}

这使用了 JsonFormatter from the Google Protobuf library .

问题:所有的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);

由于最初的问题询问的是一个 50MB 的文件,对于如此大的文件,这可能是一个糟糕的解决方案,但考虑到我在 JsonFormatter.Settings 上找不到任何内容。 ,这就是我想要的。

关于c# - 有什么方法可以将 google protobuf 消息转换为带缩进的 json?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51467687/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com