public void SerailizeUsingJsonFormattedStringForDictOfBinaryData()
        {
#if NET461
            var expected = File.ReadAllText(GetFileName("JsonFormattedStringDictOfBinaryDataNet461.json")).TrimEnd();
#else
            var expected = File.ReadAllText(GetFileName("JsonFormattedStringDictOfBinaryData.json")).TrimEnd();
#endif

            var payload = new ModelWithBinaryDataInDictionary {
                A = "a.value"
            };

            var details = new Dictionary <string, BinaryData>();
            details["strValue"]    = BinaryData.FromObjectAsJson("1");
            details["intValue"]    = BinaryData.FromObjectAsJson(1);
            details["doubleValue"] = BinaryData.FromObjectAsJson(1.1);

            var innerProperties = new Dictionary <string, object>();
            innerProperties["strValue"]    = "2";
            innerProperties["intValue"]    = 2;
            innerProperties["doubleValue"] = 2.2;

            details["innerProperties"] = BinaryData.FromObjectAsJson(innerProperties);
            payload.Details            = details;

            string actual = GetSerializedString(payload);
            Assert.AreEqual(expected, actual);
        }
        public void DeserializeModelWithDictionaryOfBinaryData()
        {
            using var fs       = File.Open(GetFileName("JsonFormattedStringDictOfBinaryData.json"), FileMode.Open, FileAccess.Read, FileShare.Read);
            using var document = JsonDocument.Parse(fs);
            var data = ModelWithBinaryDataInDictionary.DeserializeModelWithBinaryDataInDictionary(document.RootElement);

            Assert.AreEqual("a.value", data.A);
            Assert.AreEqual("1", data.Details["strValue"].ToObjectFromJson <string>());
            Assert.IsTrue(data.Details["strValue"].ToObjectFromJson() is string);
            Assert.AreEqual(1, data.Details["intValue"].ToObjectFromJson <int>());
            Assert.IsTrue(data.Details["intValue"].ToObjectFromJson() is int);
            Assert.AreEqual(1.1, data.Details["doubleValue"].ToObjectFromJson <double>());
            Assert.IsTrue(data.Details["doubleValue"].ToObjectFromJson() is double);

            var toObjectWithT     = data.Details["innerProperties"].ToObjectFromJson <Dictionary <string, object> >();
            var jsonElementObject = data.Details["innerProperties"].ToObjectFromJson <object>();

            Assert.IsTrue(jsonElementObject is JsonElement);
            var jsonDictionary = data.Details["innerProperties"].ToObjectFromJson();

            Assert.IsTrue(jsonDictionary is Dictionary <string, object>);
            Assert.IsTrue(toObjectWithT["strValue"] is JsonElement);

            var dict = data.Details["innerProperties"].ToObjectFromJson() as Dictionary <string, object>;

            Assert.AreEqual("2", (string)dict["strValue"]);
            Assert.AreEqual(2, (int)dict["intValue"]);
            Assert.AreEqual(2.2, (double)dict["doubleValue"]);
        }