在我的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);
}
}
答案 0 :(得分:3)
你可以使用
Dictionary
string
和string
这样
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
。