在c#中将json解析为字符串时,所有值都不会出现

本文关键字:json 中将 字符串 | 更新日期: 2023-09-27 18:02:25

我在json响应中有json数据字符串。我只能得到请求id值。还有一些是在调试时出现的,但无法从字典类型中检索。你能告诉我如何获得手机号码的其他值-日期,状态和描述。添加的屏幕截图请浏览http://postimg.org/image/6iad15yxl/

my json data

{
    "requestId": "546b384ce51f469a2e8b4567",
    "numbers": {
        "917566551111": {
            "date": "2014-11-18 17:45:59",
            "status": 1,
            "desc": "DELIVERED"
        }
    }
}

c#代码
        public partial class jsontoCsharp : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
        json = Request.QueryString["data"];
                var req = JsonConvert.DeserializeObject<Request>(json);
                 string requestid = req.requestId;
                  }
        }
   public class smsstatus
{
    public string date { get; set; }
    public int status { get; set; }
    public string desc { get; set; }
}

public class Request
{
    public string requestId { get; set; }
    public Dictionary<string, smsstatus> numbers { get; set; } //<-- See this line
}

在c#中将json解析为字符串时,所有值都不会出现

你的模型应该是这样的

public class smsstatus
{
    public string date { get; set; }
    public int status { get; set; }
    public string desc { get; set; }
}

public class Request
{
    public string requestId { get; set; }
    public Dictionary<string, smsstatus> numbers { get; set; } //<-- See this line
}

现在这些反序列化可以工作了

var req = JsonConvert.DeserializeObject<Request>(json);

var req = new JavaScriptSerializer().Deserialize<Request>(json);

由于您的Json相当复杂,请尝试如下操作:

var results = JsonConvert.DeserializeObject<dynamic>(json);

var result包含您的反序列化json,现在您可以使用点(.)符号访问results对象