如何获取json字符串某些部分的值?

时间:2019-07-17 18:58:26

标签: c# asp.net json api

我正在使用此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,有人可以帮助我获取此值吗?

1 个答案:

答案 0 :(得分:1)

json属性包含一个更多的JSON字符串,因此您必须像处理整个外部结构一样再次对它进行反序列化。

因此,现在有了convert数组,您可以拉出第一个对象,获取json的值并反序列化:

var json = JsonConvert.DeserializeObject<Dictionary<string, string>>(convert[0]["json"]);

然后您可以像这样提取每个值:

var id = json["Id"];

提醒您,问题中的JSON实际上无效。其中有一些错误。但是我假设它们只是复制/粘贴错误,并且Web服务实际上正在返回有效的JSON。