c# - 如何使用字段名称的无效字符解析 Json?例如{ "file/folder": "/Shared/Salesforce/asdf.txt" } with Newtonsoft?

标签 c# json json.net

我从网络服务收到了以下 JSON。如何在 Netwtonsoft 中解析以下 JSON?

{ "file/folder": "/Shared/Salesforce/asdf.txt" } 
   ^^^^^^^^^^
   ^^^^^^^^^^
   ^^^^^^^^^^---that is my problem

注意字段名有正斜杠,C#作为字段名时是无效的。 (Newtownsoft 在 JSON 名称和 C# 字段之间进行自动映射)

我的代码是

       JsonSerializerSettings set = new JsonSerializerSettings();
        List<UserAudit> usrs = JsonConvert.DeserializeObject<List<UserAudit>>(statusResult );

        foreach (var item in usrs)
        {
            Console.WriteLine(item.username + " " + item.ip_address);
        }

请注意 NewtownSoft 需要的是 C# 中 Javascript 对象的相同名称。它处理所有的转换。

 public class UserAudit
 {         

    public string username;
    public string filefolder;  // <----- HOW DO I SET THIS VARIABLE?  "file/folder" is invalid 
    public string transaction;
    public string access;
    public string time;

}

其他研究

我查看了 JsonConvert.DeserializeObject<List<UserAudit>>(statusResult); 的过载并且没有看到在数据进入时重命名或重新格式化数据的直接方法。我查看了 JsonSerializerSettings 和 JsonConverters。

最佳答案

您想使用 JSON 属性来指定要映射到模型的属性的名称。

public class UserAudit
{
    [JsonProperty("username")]
    public string UserName { get; set; }

    [JsonProperty("file/folder")]
    public string FileFolder { get; set; }

    [JsonProperty("transaction")]
    public string Transaction { get; set; }

    [JsonProperty("access")]
    public string Access { get; set; }

    [JsonProperty("time")]
    public string Time { get; set; }
}

对于大多数序列化程序来说,寻找属性来定义它们应该如何序列化/反序列化是很常见的。

关于c# - 如何使用字段名称的无效字符解析 Json?例如{ "file/folder": "/Shared/Salesforce/asdf.txt" } with Newtonsoft?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19865260/

相关文章:

c# - 从不同的(非引用的)程序集中获取值(value)

c# - 使用证书保护 IIS 中的 WCF 服务

c# - 防止 setter 在使用 Newtonsoft JSON.NET 反序列化时重新运行操作

c# - Asp.Net Core 2.0 中的“HttpPostedFileBase”

c# - 一旦 API 可供请求,启动后执行异步代码

c# - 无法使用 Json.Net 序列化对象

JavaScript、JQuery。需要帮助从我的 JSON 中获取 'name'

json - 为什么 Mongoose 用 "[object Object]"替换子文档?

c# - 如何以重构安全的方式使用 JSON.Net 来获取持久数据

c# - JsonConvert.DeserializeObject<T> 不考虑属性名称