我正在使用此Json结构,但我不知道如何获取“ json”键的一部分的值
我正在使用以下代码向API发送请求,返回的是Json对象:
var reqData = (HttpWebRequest)WebRequest.Create(string.Format("http://server_ip/system/message/date/{0}/", txtDate.Text));
reqData.ContentType = "application/json";
reqData.Method = "GET";
var answer = (HttpWebResponse)reqData.GetResponse();
List<Dictionary<string, string>> convert = JsonConvert.DeserializeObject<List<Dictionary<string, string>>>(answer);
结果是这样的Json结构:
"[
{
\"idMessage\":\"--Message Id--",
\"idTemplate\":--TemplateId--,
\"mail\":\"--mail dir--\",
\"subject\":\"--message subject--\",
\"json\":\"{
\\\"Id\\\":\\\"--Person Id--\\\",
\\\"name\\\":\\\"--Person name--\\\",
\\\"date\\":\\\"--Register date-\\\",
\\\"hour\\\":\\\"--Register hour--\\\"
}\",
\"senddate\":\"--sent date--\",
\"status\":0,
\"template\":null
}
]"
我想从此Json字符串的json部分获取值(Id,name,date,hour
,有人可以帮助我获取此值吗?
答案 0 :(得分:1)
该json
属性包含一个更多的JSON字符串,因此您必须像处理整个外部结构一样再次对它进行反序列化。
因此,现在有了convert
数组,您可以拉出第一个对象,获取json
的值并反序列化:
var json = JsonConvert.DeserializeObject<Dictionary<string, string>>(convert[0]["json"]);
然后您可以像这样提取每个值:
var id = json["Id"];
提醒您,问题中的JSON实际上无效。其中有一些错误。但是我假设它们只是复制/粘贴错误,并且Web服务实际上正在返回有效的JSON。