相关疑难解决方法(0)

如何在ASP.NET中将JSON反序列化为简单的Dictionary <string,string>?

我在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库都没有开箱即用的明显功能 - 它们完全专注于通过强大的合同进行基于反射的反序列化.

有任何想法吗?

限制:

  1. 我不想实现自己的JSON解析器
  2. 无法使用ASP.NET 4.0
  3. 宁愿远离旧的,已弃用的JSON ASP.NET类

json asp.net-ajax asp.net-3.5 json.net

642
推荐指数
12
解决办法
58万
查看次数

C#JSON将Dictionary序列化为{key:value,...}而不是{key:key,value:value,...}

是否可以使用以下格式的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)

c# serialization json dictionary

61
推荐指数
5
解决办法
12万
查看次数