Skip to content

Instantly share code, notes, and snippets.

@ovatsus
Last active October 20, 2015 11:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ovatsus/1608951 to your computer and use it in GitHub Desktop.
Save ovatsus/1608951 to your computer and use it in GitHub Desktop.
Serialization of Dictionary<string, object>
using System.Collections.Generic;
using Newtonsoft.Json;
using NUnit.Framework;
using ServiceStack.Text;
using JsonSerializer = ServiceStack.Text.JsonSerializer;
namespace Tests
{
[TestFixture]
public class TestJsonSerialization
{
private static Dictionary<string, object> SetupDict()
{
return new Dictionary<string, object> {
{ "a", "text" },
{ "b", 32 },
{ "c", false },
};
}
private static void AssertDict(Dictionary<string, object> dict)
{
Assert.AreEqual("text", dict["a"]);
Assert.AreEqual(32, dict["b"]);
Assert.AreEqual(false, dict["c"]);
}
[Test]
public void Test_JsonNet()
{
var dict = SetupDict();
var json = JsonConvert.SerializeObject(dict);
var deserializedDict = JsonConvert.DeserializeObject<Dictionary<string, object>>(json);
AssertDict(deserializedDict);
}
[Test]
public void Test_ServiceStack_Text_TypeSerializer()
{
var dict = SetupDict();
var json = TypeSerializer.SerializeToString(dict);
var deserializedDict = TypeSerializer.DeserializeFromString<Dictionary<string, object>>(json);
AssertDict(deserializedDict);
}
[Test]
public void Test_ServiceStack_Text_JsonSerializer()
{
var dict = SetupDict();
var json = JsonSerializer.SerializeToString(dict);
var deserializedDict = JsonSerializer.DeserializeFromString<Dictionary<string, object>>(json);
AssertDict(deserializedDict);
}
}
}
@github-duran
Copy link

Your test is incomplete:
(object)ints will be deserialized as longs, and floats as doubles.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment