我有上已经储存像下面行的一些hundereds一个JSON文件..数据一次性
[
{
"Id": "1",
"Name": "A"
},
{
"Id": "2",
"Name": "B"
}
]
我想这个加载到一个类的集合。这些数据是静态的,不会改变,所以我只需要加载一次。
我创建了一个类,并将其加载到私有构造函数中并加载到我在该类中的集合中。
public sealed class JsonLoader : IJsonloader
{
private readonly IEnumerable<Product> products = new List<Product>();
private JsonLoader()
{
using (var r = new StreamReader("data.json"))
{
var json = r.ReadToEnd();
products = //deserialse the json here
}
}
public static IEnumerable<Product> Products => this.products;
}
使用结构映射singleton选项实现单例。我想知道我的实施方式是否正确,或者如果这可以进一步改善?
或任何其他最好的办法吗?任何帮助非常感谢:)
是否有意识的设计决定不使用类似'Newtonsoft.Json'这样的库来进行实际的序列化?问题是,即使你只想读取文件一次,通过调用ReadToEnd,你会看到整个文件竞争并从它们中创建一个字符串 - 你放弃了流式传输。使用lib可以避免这种情况,也不会重新实现其他人已经很好解决的问题。 –