Search code examples
c#jsonjson.netbson

save JObject as Base64 Encoded file


I'm reading a Json file into a JObject myParams with this code. This works well

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

What I want is then to encode the information and save it back into another file. This code reads a file, encodes it and directly saves it. It works

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

However I don't want to read a file and immediately encode it.

Instead I want to import myParams with the first piece of code, do some modifications to the JObject and then encode it and save it encoded in a file.

The problem is that then I cannot use Convert.ToBase64String on myParams since it expect bytes instead of a JObject.

How can I encode and save my JObject myParams into an encoded file?


Solution

  • You can pass the following parameter to your Convert.ToBase64String method call:

    Encoding.UTF8.GetBytes(myParams.ToString(Formatting.None))
    
    • the ToString call on the JObject is overwritten to emit Json
    • the Formatting.None parameter will omit indentation
    • the Encoding.XYZ.GetGetBytes converts a string into a byte[]