1

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

4

2 回答 2

10

您想使用 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; }
}

大多数序列化程序通常会寻找属性来定义它们应该如何序列化/反序列化。

于 2013-11-08T17:44:55.637 回答
0

从此改变。

    "/Shared/Salesforce/asdf.txt"

对此

    @"/Shared/Salesforce/asdf.txt"
于 2013-11-08T17:41:15.480 回答