以我塞納里奧,有一段代碼像下面在JSON響應實體: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);
}
}
您的測試代碼似乎工作,如果你改變JSON字符串這樣'@ 「{」「hashkeys」「:{」「key1」「:」「value1」「,」「key2」「:」「value2」「}}」' – Grundy
You are right。但是在反序列化之後,我所需要的字典沒有任何價值。 –