2016-01-27 88 views
-1

我有靜態屬性這樣一個嵌套類:如何反序列化JSON(newtonsoft)到嵌套靜態類

public class A { 
    public class B { 
     public static string BString = null; 
    } 
} 

這裏是JSON:

{ 
    B { 
     "BString" : "Hello" 
    } 
} 

我想反序列化這個JSON以便它設置嵌套的靜態值(ABBString應包含字符串Hello)。我對牛頓軟件瞭解不多,但是有沒有辦法讓它做到這一點,而不必實例化B類。 我不想根本不需要改變班級就可以開始工作。我知道你可以將[JsonProperty]添加到靜態屬性中以正確地反序列化,但這不適用於嵌套類。

+3

反序列化與實例有關。所以你可能會在這裏走錯了路。 (並且該數據片段不是有效的JSON。) – Wormbo

+0

JsonConvert.DeserializeObject (JsonParams); –

+0

除非您主動打擊序列化庫,否則這不是真的可能。正如@Wormbo提到的,JSON代表* objects *,而不是名稱空間,通常不是靜態變量。從「Newtonsoft」閱讀時,絕對有可能讀取您的定製邏輯,但幾乎肯定有更好的方法來完成您所需要的。 – Rob

回答

1

一般來說,你不能在靜態類上使用序列化。在列出兩個不同的A類的情況下,哪一類會贏得比賽並設置靜態B值?

問題: 您真的需要使用嵌套(靜態)類嗎?它背後的原因是什麼?你爲什麼不使用非嵌套類?

如果您真的想實現它,可能會有一個解決方法:創建一個新的屬性,在該屬性中設置和檢索靜態值。希望這個新的財產將(序列化)。

看到這個骯髒的例子:

public class A 
{ 
    public B SetBProperty 
    { 
     get { return B.BString; } 
     set { B.BString = value; } 
    } 

    public class B { 
     public static string BString = null; 
    } 
} 

請記住,在List<A>(德)序列化的情況下,最後的(de)系列化項目將贏得和設置的值。