這是 JSON 檔案的示例:
{
"Object": {
"series": {
"transformation": "",
"source": "series",
"default": ""
},
"latitude": {
"transformation": "",
"source": "lat",
"default": ""
},
"longitude": {
"transformation": "",
"source": "long",
"default": ""
}
}
}
我目前的反序列化課程JsonConvert.DesirializeT()
internal class ImportedObjects
{
[JsonProperty("Object")]
public ImportedSubProperties ImportedObject { get; set; }
internal class ImportedSubProperties : ImportedObjects
{
[JsonProperty("series")]
public ImportedProperties series { get; set; }
[JsonProperty("latitude")]
public ImportedProperties latitude { get; set; }
[JsonProperty("longitude")]
public ImportedProperties longitude { get; set; }
}
}
internal class ImportedProperties
{
public string Transformation { get; set; }
public string Source { get; set; }
public string Default { get; set; }
}
當前決議代碼:
using (StreamReader r = new StreamReader(file))
{
string json = r.ReadToEnd();
MappingObjects = JsonConvert.DeserializeObject<ImportedObjects>(json);
}
當只有 3 個屬性(系列、緯度、經度)時,一切看起來都很好,但在實際檔案中,“經度”(X、Y、大小……)之后至少有 50 個屬性。我的問題:是否可以使用反序列化而不求助于創建額外的 50 個屬性?最好將所有內容直接存盤到字典中。
uj5u.com熱心網友回復:
您可以使用Dictionary<>.
internal class ImportedObjects
{
public Dictionary<string,ImportedProperties> Object { get; set;}
}
internal class ImportedProperties
{
public string Transformation { get; set; }
public string Source { get; set; }
public string Default { get; set; }
}
uj5u.com熱心網友回復:
我建議您將 StreamReader 傳遞給 JsonTextReader,這比使用 ReadToEnd 更有效。
JsonSerializer serializer = new JsonSerializer();
using (StreamReader r = new StreamReader(file))
{
using( JsonTextReader reader = new JsonTextReader( r ) )
{
MappingObjects = serializer.Deserialize<ImportedObjects>( reader );
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/512204.html
