我有一个具有以下格式数据的文本文件
[
{
"SponsorID": 1,
"FirstBAID": 7395836
},
{
"SponsorID": 2,
"FirstBAID": 3509279,
"SecondBAID": 2947210
},
{
"SponsorID": 3,
"FirstBAID": 1776294,
"SecondBAID": 6503843
},
{
"SponsorID": 4,
"FirstBAID": 8014528,
"SecondBAID": 6203155
},
{
"SponsorID": 5,
"FirstBAID": 5968769,
"SecondBAID": 7410195,
"ThirdBAID":8950170,
}
]
我想以列表形式读取此数据,然后需要按SponsorID进行查询。
我已经创建了一个这样的类(class)
public class SponsorInfo
{
public decimal SponsorID { get; set; }
public decimal FirstBAID { get; set; }
public decimal SecondBAID { get; set; }
public decimal ThirdBAID { get; set; }
}
现在如何读取文本文件数据并绑定(bind)SponsorInfo类?
最佳答案
从NuGet程序包管理器控制台安装Newtonsoft.Json nuget程序包:
PM> Install-Package Newtonsoft.Json
然后:
var jsonText = File.ReadAllText("filepath");
var sponsors = JsonConvert.DeserializeObject<IList<SponsorInfo>>(jsonText);
要查询
SponsorID
,可以使用LINQ:var sponsor5 = sponsors.FirstOrDefault(x => x.SponsorID == 5);
如果您经常需要通过
SponsorID
查找,则可以将结果转换为关键字为SponsorID
的字典。这将提高性能,因为它不需要为每个查找都对整个列表进行枚举。我还建议您将SponsorID
的类型更改为int
而不是decimal
。var sponsorsById = sponsors.ToDictionary(x => x.SponsorID);
然后,您可以像下面这样轻松地访问它:
if (sponsorsById.ContainsKey(5))
var sponsor5 = sponsorsById[5];
关于c# - 从文本文件C#中读取Json数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38179819/