![](/img/trans.png)
[英]How can i parse JSON string in c# Get error Cannot deserialize the current JSON object (e.g. {“name”:“value”})
[英]How do I parse Json with an invalid character for a field name? e.g. { “file/folder”: “/Shared/Salesforce/asdf.txt” } with Newtonsoft?
我从Web服务收到以下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; }
}
大多数序列化程序通常会寻找属性来定义如何序列化/反序列化。
从此更改它。
"/Shared/Salesforce/asdf.txt"
对此
@"/Shared/Salesforce/asdf.txt"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.