我在JSON中有一个简单的键/值列表,通过POST发送回ASP.NET.例:
{ "key1": "value1", "key2": "value2"}
Run Code Online (Sandbox Code Playgroud)
我并没有想要进入强大的.NET对象
我只需要一个普通的旧的Dictionary(Of String,String),或者一些等价的(hash table,Dictionary(Of String,Object),old-school StringDictionary - hell,一个2-D字符串数组对我有用.
我可以使用ASP.NET 3.5中的任何可用内容,以及流行的Json.NET(我已经将其用于序列化到客户端).
显然,这些JSON库都没有开箱即用的明显功能 - 它们完全专注于通过强大的合同进行基于反射的反序列化.
有任何想法吗?
限制:
是否可以使用以下格式的DataContractJsonSerializer将.Net Dictionary <Key,Value>序列化为JSON :
{
key0:value0,
key1:value1,
...
}
Run Code Online (Sandbox Code Playgroud)
我使用Dictionary <K,V>,因为没有预定义的输入结构.
我对DataContractJsonSerializer结果感兴趣!我已经找到了一个"Surrogate"示例,但输出中还有一个"数据",如果字典<K,String>,则转义也是假的.
我找到了解决方案,需要什么!首先,一个可序列化的"字典"类:(当然,这个示例只是以一种方式工作,但我不需要反序列化)
[Serializable]
public class MyJsonDictionary<K, V> : ISerializable {
Dictionary<K, V> dict = new Dictionary<K, V>();
public MyJsonDictionary() { }
protected MyJsonDictionary( SerializationInfo info, StreamingContext context ) {
throw new NotImplementedException();
}
public void GetObjectData( SerializationInfo info, StreamingContext context ) {
foreach( K key in dict.Keys ) {
info.AddValue( key.ToString(), dict[ key ] );
}
}
public void Add( K key, V value ) …Run Code Online (Sandbox Code Playgroud)