В моей Senario, есть кусок кода, как показано ниже в объекте ответа JSon:JSon Deserialize для хэша
"hashkeys":
{
"key1":"value1",
"key2":"value2",
"key3":"value3"
}
клавиши, такие как «ключом1», «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
Вы правы. Но после десериализации словарь, который мне нужен, не имеет значений. –