【发布时间】:2009-12-05 00:11:30
【问题描述】:
考虑以下 JSON:
{
"Code": 2,
"Body": {
"Dynamic-Key": {
"Key1": "Val1",
"Key2": "Val2"
}
}
}
定义以下类结构:
[DataContract]
class JsonResponse
{
[DataMember]
public string Code { get; set; }
[DataMember]
public JsonResponseBody Body { get; set; }
}
[DataContract]
class JsonResponseBody
{
[DataMember(Name = "Dynamic-Key")]
public DynamicKeyData Data { get; set; }
}
[DataContract]
class DynamicKeyData
{
[DataMember]
public string Key1 { get; set; }
[DataMember]
public string Key2 { get; set; }
}
我可以使用以下代码反序列化给定的 JSON:
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(JsonResponse));
JsonResponse responseData = serializer.ReadObject(responseStream) as JsonResponse;
但在我的情况下,“Dynamic-Key” 是未知的,由用户输入值定义。 处理这种 JSON 定义的正确方法是什么?
注意事项:
JSON 是第三方 Api,因此无法更改它。
在我的情况下,我不关心动态键名称,所以如果有一个选项可以始终映射到一个通用名称,它将完成这项工作。
提前致谢。
【问题讨论】:
标签: c# .net json serialization