JSon反序列化哈希

时间:2014-02-10 05:05:33

标签: c# json map

在我的senario中,在JSon响应实体中有一段代码如下:

"hashkeys":
{
    "key1":"value1",
    "key2":"value2",
    "key3":"value3"
}

“key1”,“key2”,“key3”等键(以及键的数量)仅在运行时已知,但无法在编码时确定。

如何编写JSon实体来反序列化此类响应?我正在使用C#语言DataContractJsonSerializer。

我的测试代码:

[DataContract]
class Test {
    [DataMember(Name = "hashkeys")]
    public Dictionary<string, string> dic { get; set; }

}

class Program
{
    public static T FromJson<T>(string strJson) where T : class
    {
        DataContractJsonSerializer ds = new DataContractJsonSerializer(typeof(T));
        using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(strJson)))
        {
            return ds.ReadObject(ms) as T;
        }
    }

    static void Main(string[] args)
    {
        string json = @"{""hashkeys"":{""key1"":""value1"",""key2"":""value2""}}";
        Test MyResponse = FromJson<Test>(json);
        Console.WriteLine(MyResponse);
    }
}

2 个答案:

答案 0 :(得分:3)

你可以使用

Dictionary stringstring这样

string json = @"{""key1"":""value1"",""key2"":""value2""}";   
Dictonary<string,string> MyResponse =     JsonConvert.DesirializeObject<Dictionary<string,string>>(json);
Console.WriteLine(values.Count);
// 2
Console.WriteLine(values["key1"]);
// Value1

有关更多示例和参考资料Click Here

答案 1 :(得分:1)

将其反序列化为Dictionary<string, string>

它是KeyValuePair<string, string>的集合,这正是您尝试处理的内容。 "KeyX"将成为Key"valueX"将成为字典entiry的Value