c# - 要在 asp.net c# 中解析的奇怪 Json

标签 c# asp.net

我正在调用一个返回下面提到的 json 的 api。

{
    "salarySlipItems" : {
        "\"0\"" : {
            "value" : "11000.00",
            "description" : "Worth Salary",
            "sort" : "1"
        },
        "\"2\"" : {
            "value" : "500.00",
            "description" : "Other Income",
            "sort" : "3"
        },
        "\"3\"" : {
            "value" : "1354.84",
            "description" : "General Allowance",
            "sort" : "4"
        },
        "\"4\"" : {
            "value" : "500.00",
            "description" : "Telephone Allowance",
            "sort" : "5"
        },
        "\"7\"" : {
            "value" : "-2000.00",
            "description" : "Other Deductions",
            "sort" : "8"
        }
    },
    "decimalDigits" : "2",
    "status" : "1"
}

任何人都可以指导我如何在 c# asp.net 中解析它吗?我相信 salarySlipItems 是一个具有所有属性的对象。什么是\"0\\"2\等等..?

最佳答案

\"2\" 在这种情况下是字典的键。它只是一个转义的 "2"。由于某种原因,在您的 JSON 响应中,所有数字都显示为字符串。

您可以使用 Dictionary 反序列化此 JSON 对象:

public class Response
{
    public Dictionary<string, SlipItem> salarySlipItems { get; set; }
    public string decimalDigits { get; set; }
    public string status { get; set; }
}

public class SlipItem 
{
    public string value { get; set; }
    public string description { get; set; }
    public string sort { get; set; }
}

然后,您将能够通过这种方式访问​​它:

var response = JsonConvert.DeserializeObject<Response>(jsonString);
Console.WriteLine(response.status);

通过键访问字典项目:

var item = response["\"2\""];
Console.WriteLine(item.value);

通过字典枚举:

foreach (var item in response) 
{
    Console.WriteLine("{0} has a description: {1}", item.Key, item.Value.description);
}

关于c# - 要在 asp.net c# 中解析的奇怪 Json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31964445/

相关文章:

c# - 如何从 mpc-hc 实例中获取重要的媒体信息?

c# - 如何根据 gridview 中的某些值更改标签的颜色

c# - 如何知道上传的文件是否被更改?

asp.net - 如何让 ASP.NET AJAX 使用 GZip 压缩发送其 JSON 响应?

c# - WCF 测试客户端服务调用失败

c# - 在 Listview 自定义适配器中编辑文本在滚动时丢失了它的位置? - c# - Xamarin.Android

c# - 在 MSIL 反编译方面,SecureString 会给我带来任何优势吗?

c# - 使用 EF 的 DbContext.ExecuteSqlCommand() 进行交易时出现异常

javascript - 使用 Javascript 获取空值

c# - 在默认的 ASP.NET Web 窗体中,您在哪里添加指向 CSS 的链接?