簡體   English   中英

如何使用字段名稱的無效字符來解析Json? 例如,使用Newtonsoft {{“文件/文件夾”:“ /Shared/Salesforce/asdf.txt”}?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM