我从网络服务收到了以下 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/