我有一个包含以下格式数据的文本文件
[
{
"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,
}
]
我想将此数据作为List& amp;然后我需要通过SponsorID查询。 我创建了一个这样的类
public class SponsorInfo
{
public decimal SponsorID { get; set; }
public decimal FirstBAID { get; set; }
public decimal SecondBAID { get; set; }
public decimal ThirdBAID { get; set; }
}
现在我如何阅读文本文件数据&绑定 SponsorInfo 类?
答案 0 :(得分:9)
从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];
答案 1 :(得分:3)
您需要安装Newtonsoft.Json,然后您需要使用它:
using Newtonsoft.Json;
class Program
{
public void LoadJson()
{
using (StreamReader r = new StreamReader("file.json"))
{
string json = r.ReadToEnd();
List<SponsorInfo> items = JsonConvert.DeserializeObject<List<SponsorInfo>>(json);
}
}
public class SponsorInfo
{
public decimal SponsorID { get; set; }
public decimal FirstBAID { get; set; }
public decimal SecondBAID { get; set; }
public decimal ThirdBAID { get; set; }
}
static void Main(string[] args)
{
dynamic array = JsonConvert.DeserializeObject(json);
foreach (var item in array)
{
Console.WriteLine("{0} {1}", item.temp, item.vcc);
}
}
}
答案 2 :(得分:1)
通过创建列表对象来扩展类
public class SponsorInfo
{
public decimal SponsorID { get; set; }
public decimal FirstBAID { get; set; }
public decimal SecondBAID { get; set; }
public decimal ThirdBAID { get; set; }
}
public class SponsorInfoList
{
public Dictionary<string, SponsorInfo> SIList { set; get; }
}
将文件反序列化为,
var obj = JsonConvert.DeserializeObject<SIList >(File.ReadAllText(FileName));
然后你就可以阅读了,
foreach(var listItem in res.SIList )
{
Console.WriteLine("SponsorID ={0}, FirstBAID ={1}, SecondBAID ={2}, ThirdBAID ={3}", listItem.SponsorID, listItem.FirstBAID, listItem.SecondBAID, listItem.ThirdBAID );
}
可能存在语法错误,但方法仍然相同。
随时留言!
答案 3 :(得分:-1)
您需要反序列化到您的对象中,如:
赞助商赞助商= jsonConvert.DeserializeObject(json);