在我的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);
}
}
您可以使用
像这样string
和string
Dictionary
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
有关更多示例和参考,请单击此处
将其反序列化为 Dictionary<string, string>
。
这是一个KeyValuePair<string, string>
的集合,这正是您要处理的。 "KeyX"
将成为Key
,"valueX"
将成为字典全文的Value
。