【问题标题】:save JObject as Base64 Encoded file将 JObject 保存为 Base64 编码文件
【发布时间】:2022-02-01 22:38:29
【问题描述】:

我正在使用此代码将 Json 文件读入 JObject myParams。这很好用

using (StreamReader file = File.OpenText("config.json"))
using (JsonTextReader reader = new JsonTextReader(file))
{
    JObject myParams = (JObject)JToken.ReadFrom(reader);
}

然后我想要对信息进行编码并将其保存回另一个文件。 此代码读取文件,对其进行编码并直接保存。有效

using (StreamWriter w = new StreamWriter("filenameEncoded.bson", true))
    ​w.Write(Convert.ToBase64String(File.ReadAllBytes("filename.json")));

但是我不想读取文件并立即对其进行编码。

我想用第一段代码导入 myParams,对 JObject 进行一些修改,然后对其进行编码并将其编码保存在文件中。

问题是我不能在myParams 上使用Convert.ToBase64String,因为它需要字节而不是JObject。

如何将我的 JObject myParams 编码并保存到编码文件中?

【问题讨论】:

  • 您是否尝试过将此Encoding.UTF8.GetBytes(myParams.ToString(Formatting.None)) 传递给Convert.ToBase64String? (显然UTF8 应该被替换,如果源文件是 ASCII,例如)
  • 刚试过,(你的意思是UTF8而不是UT8?)。它生成了一个编码文件。将尝试对其进行解码并查看它是否与原始版本匹配。
  • 是的,我指的是 UT8,抱歉打错了
  • 好的,可以了,谢谢
  • 实际目标是什么? Base64 编码是一种将二进制数据存储为文本的方法。 Json 已经是文本,所以你不会得到任何东西。如果你想存储 Bson 数据,你可能应该使用BsonWriter

标签: c# json json.net bson


【解决方案1】:

您可以将以下参数传递给您的Convert.ToBase64String 方法调用:

Encoding.UTF8.GetBytes(myParams.ToString(Formatting.None))
  • JObject 上的 ToString 调用是 overwritten to emit Json
  • Formatting.None 参数将省略缩进
  • Encoding.XYZ.GetGetBytes 将字符串转换为byte[]

【讨论】:

    猜你喜欢
    • 2014-10-29
    • 1970-01-01
    • 2014-06-21
    • 2012-03-23
    • 1970-01-01
    • 1970-01-01
    • 2011-09-10
    • 2018-09-25
    • 1970-01-01
    相关资源
    最近更新 更多