如何处理json输入中键名中的“-”

时间:2018-12-18 01:27:42

标签: c# json asp.net-web-api

我正在尝试将一个dotnet Web API核心项目放在一起。我根据遇到的教程以及其他链接整理了一些内容。基本上,我需要从POST调用中解析并提取一些JSON数据,尤其是'fld-val-list'中的内容:

{
    "attempt": 1,
    "event": {
        "evt-tp": "<some string>",
        "fld-val-list": {
            "application_id": 9999,
            "company-id": 9999,
            "fragments_count": 1,
            "from_address": "<some val>",
            "has_attachment": false,
            "message_body": "This is some text",
        },
    },
}

这是我的POST方法的摘要:

[HttpPost]
public async Task<ActionResult<IEnumerable<FldValList>>> PostInputMessage(MyMessage message)
{
    _context.FieldValLists.Add(message.@event.fld_val_list);
    await _context.SaveChangesAsync();
    return CreatedResult();
}

这是从json2csharp生成的类信息:

public class FldValList
{
    public int application_id { get; set; }
    public int __invalid_name__company-id { get; set; } <--I replaced with company_id
    public int fragments_count { get; set; }
    public string from_address { get; set; }
    public bool has_attachment { get; set; }
    public string message_body { get; set; }
}

public class Event
{
    public string __invalid_name__evt-tp { get; set; } <--I replaced with evt_tp
    public FldValList __invalid_name__fld-val-list { get; set; } <--I replaced with fld_val_list
}

public class MyMessage
{
    public int attempt { get; set; }
    public Event @event { get; set; }
}

其中MyMessage是映射数据的外部类。 在http://json2csharp.com/中,我可以创建C#类,但是其中的键中带有“-”的键存在问题。我尝试用'_'替换'-',但它们不会自动映射出来(因此会分配空值)。我读到C#不允许在其中使用变量名“-”。如何使用类来解析JSON输入?

0 个答案:

没有答案