【发布时间】:2020-05-23 18:28:37
【问题描述】:
我在 C# 中使用 Newtonsoft JSON。
我有一个正在尝试解析的日志文件,以便我可以使用日志文件中的数据填充数据库。
在日志文件中,每一行都是一个单独的 JSON 对象。
日志文件如下所示:
{ "timestamp":"2020-02-02T04:49:53Z", "event":"Friends", "Status":"Online", "Name":"User1" }
{ "timestamp":"2020-02-02T04:48:06Z", "event":"Commander", "FID":"F2", "Name":"User2" }
{ "timestamp":"2020-02-02T04:48:06Z", "event":"Materials", "Raw":[ { "Name":"cadmium", "Count":9},
{ "Name":"zinc", "Count":45 }, { "Name":"iron", "Count":71 }]}
这是我目前正在做的事情:
var fullPath = @"X:\Data\Log Files\test log.log";
string[] lines = File.ReadAllLines(fullPath);
foreach (var line in lines)
{
var json = JObject.Parse(line);
var eventType = json["event"].Value<string>();
JArray raw = (JArray)line["Raw"];
switch (eventType)
{
case "Friends":
var status = json["Status"].Value<string>();
var frName = json["Name"].Value<string>();
Console.WriteLine("The friend " + frName + " is currently " + status + ".");
Console.WriteLine(json);
break;
case "Commander":
var fid = json["FID"].Value<string>();
var CMDR = json["Name"].Value<string>();
Console.WriteLine("User " + CMDR + " with ID " + ".");
Console.WriteLine(json);
break;
case "Materials":
//do something here that is magical.
break;
default:
Console.WriteLine("N/A");
break;
}
前两种情况正常。但是,我不知道如何从“材料”事件中获取数组“原始”。
仅供参考 - 该行中还有另外两个数组。所以,我需要能够 提取“Raw”以及其他数组。
到目前为止,我只是想不通。
我是一个初学者,所以请像在和蹒跚学步的孩子说话一样解释这一点。 :)
请帮忙?
非常感谢!
【问题讨论】: