Asp.Net 将 Dictionary<string, object> 反序列化为对象

Mak*_*Vi. 5 c# asp.net serialization

反序列化这个的最好方法是什么

Dictionary<string, object>{
   {"fName", "John"},
   {"lName", "Doe"},
   {"email", "john@doe.net"}
}
Run Code Online (Sandbox Code Playgroud)

对此

class Member{
   string fName;
   string lName;
   string email;
}
Run Code Online (Sandbox Code Playgroud)

Jer*_*emy 5

如今,NewtonSoft 在 ASP.NET 应用程序中变得如此普遍,如果我需要一个简短而甜蜜的解决方案来处理这种类型的映射,我可以使用类似这样的代码。当然,如果第三方库尚未存在,那么引入第三方库可能会被滥用,但有时我们只是使用有效的库。牛顿软件做到了!

using Newtonsoft.Json;
class SerializationTests
{
    public void DictionarySerializeSample()
    {

        var dict = new Dictionary<string, object>
        {
            {"fName", "John"},
            {"lName", "Doe"},
            {"email", "john@doe.net"}
        };

        string dictInJson = JsonConvert.SerializeObject(dict);
        var member = JsonConvert.DeserializeObject<Member>(dictInJson);

        // use Newtonsoft to write out the object re-serialized
        Console.WriteLine(JsonConvert.SerializeObject(member, Formatting.Indented));

    }

    public class Member
    {
        public string fName;
        public string lName;
        public string email;
    }
}
Run Code Online (Sandbox Code Playgroud)


µBi*_*Bio 2

这并不是真正意义上的序列化,通常是指获取一些磁盘或网络格式的数据(二进制、ASCII、JSON 等)并将其加载到运行时对象中。

但是,如果我正确理解你的意思,我认为你想做的是......

public Member( Dictionary<string,object> dictionary )
{ 
    fName = dictionary["fName"];
    lName = dictionary["lName"];
    email = dictionary["email"];
}

// usage Member m = new Member( inputDictionary );
Run Code Online (Sandbox Code Playgroud)