2016-04-18 43 views
0

預先;我使用的是舊版本的Newtonsoft.Json(4.0.8.0)。使用屬性名稱中的非法字符轉換JSON

因此,我正在嘗試爲Web服務器應用程序編寫.NET客戶端。 要將所有傳入的數據包從json結構轉換爲.NET對象,我使用帶有內置函數JToken.ToObject的JSON序列化程序。 這要求目標.net類具有與傳入的json數據完全一樣命名的所需屬性。

現在我遇到了一個數據包,其中包含C#範圍內的無效屬性名稱(.NET總體上我認爲)。 看起來像這樣。

「12345」:{

"Name1/Part2": {} 
"Name2/Part2": {} 
"Name3/Part2": {} 
"Name4/Part2": {} 
"Name5/Part2": {} 

}

相等.NET代碼將是。

class DataPacket { 
    public DummyObject 12345 {get; set;} 


    public class DummyObject { 
    public object Name1/Part2 {get; set} 
    public object Name2/Part2 {get; set} 
    public object Name3/Part2 {get; set} 
    public object Name4/Part2 {get; set} 
    public object Name5/Part2 {get; set} 
    } 
} 

其中所有屬性名稱都是非法的('以數字開頭','非法字符 - > /')。

任何想法如何我可以解決這個問題與牛頓軟件的主要版本4?

非常感謝

+0

使用JsonProperty屬性指定要映射到whit類prop的json prop名稱。 '[JsonProperty(JSON名稱)]' – Plutonix

+0

嗨Plutonix,這工作得很好。非常感謝你! – user3411789

+0

請參閱[如何解析會導致非法C#標識符的JSON字符串?](https://stackoverflow.com/questions/24536533/how-can-i-parse-a-json-string-that-would-cause -illegal-C-尖銳的標識符/ 24536739#24536739)。 – dbc

回答

1

我相信你可以使用jsonproperty屬性,以便爲第一個是這樣的:

class DataPacket{ 
        [JSONProperty(PropertyName="1234")] 
        public DummyObject OneTwoThreeFour {get;set;}//or whatever you want to name. 
       } 

做到這一點,你需要轉換每個JSON酒店有非法命名

相關問題