我確實搜索過,但似乎我沒有找到任何解決方案......這是我的示例 Json:
{
"WSettings":{
"Message":"\"We are the universe's way of experiencing itself.\"<br/>- Kurzgesagt -",
"universalMessageProcChance":10,
"Hi":{
"altName":"Hi",
"normalState":"hi",
"hState":"hi_h",
"aState":"hi_a",
"background":"bg_owo_r",
"stateLayout":4,
"backgroundLayout":1,
"eventMessage":"Da"
},
"Yu":{
"altName":"Al",
"normalState":"al",
"hState":"al_h",
"aState":"ali_a",
"background":"bg_owo_b",
"stateLayout":4,
"backgroundLayout":1,
"eventMessage":"Da"
}
}
}
這是我的課程:
public class WSettings
{
public string Message { get; set; }
public int universalMessageProcChance { get; set; }
[JsonProperty("Hi")]
public StateW Hi { get; set; }
[JsonProperty("Yu")]
public StateW Yu { get; set; }
}
public class StateW
{
public string altName { get; set; }
public string normalState { get; set; }
public string hState { get; set; }
public string aState { get; set; }
public string background { get; set; }
public int stateLayout { get; set; }
public int backgroundLayout { get; set; }
public string eventMessage { get; set; }
}
這是反序列化的:
var w = Newtonsoft.Json.JsonConvert.DeserializeObject<WSettings>(File.ReadAllText(@"json.txt"));
它將所有屬性回傳為空。老實說,我不知道那里有什么問題,所以請原諒我的無知。任何幫助都適用:)
uj5u.com熱心網友回復:
您將需要 WSettings 上的另一個包裝類。
嘗試這樣的事情:
public class WSettingsParent
{
public WSettings WSettings { get; set; }
}
并像這樣反序列化:
WSettingsParent myDeserializedClass = JsonConvert.DeserializeObject<WSettingsParent>(File.ReadAllText(@"json.txt")));
這是一個有用的工具,用于檢查您可以用來確保正確設定類的結構:
https : //json2csharp.com/
只需將您的 json 粘貼到左側,它就會相應地生成類。(您可能需要進行一些細微的修改,但在那里可以看到大圖)。
uj5u.com熱心網友回復:
如果你仔細觀察你的 JSON,它WSettings被包裹在一個開閉大括號中。它表示這WSetting也是頂級/根級 JObject 的一個屬性。
創建新Root類并將其WSettings作為其屬性包含并使用此 Root 類反序列化您的 json
附加類:
public class Root
{
//Property of existing WSettings class
public WSettings WSettings { get; set; }
}
反序列化:
using Newtonsoft.Json;
....
var w = JsonConvert.DeserializeObject<Root>(File.ReadAllText(@"json.txt"));
//^^^^^^ Use Root class instead of WSettings
uj5u.com熱心網友回復:
已經提供了一個很好的答案。您也可以嘗試使用 JSON 決議器。它的作業
var jsparse = JObject.Parse(File.ReadAllText(@"json.txt"));
var w = JsonConvert.DeserializeObject<WSettings>(jsparse["WSettings"].ToString());
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/353746.html
上一篇:Ansible-在不知道物件/鍵名稱的情況下嵌套回圈物件
下一篇:Python扁平化深嵌套JSON
