从JSON中反序列化许多属性



以下是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,Size,…(。我的问题是:是否可以使用反序列化而不需要创建额外的50个属性?最好将所有内容直接存储到字典中。

您可以使用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; }
}

我建议您将StreamReader传递给JsonTextReader,这比使用ReadToEnd更有效。

JsonSerializer serializer = new JsonSerializer();
using (StreamReader r = new StreamReader(file))
{
using( JsonTextReader reader = new JsonTextReader( r ) )
{
MappingObjects = serializer.Deserialize<ImportedObjects>( reader );
}
}

相关内容

  • 没有找到相关文章

最新更新