我有一个具有以下格式数据的文本文件

[
    {
        "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/

10-08 22:45