c# - 如何将 JSON 从控制台打印到文件
问题描述
我正在创建一个 Excel 到 JSON 解析器,一切正常,但我很困惑。目前,我的应用程序在控制台中显示结果,我想对其进行修改并将结果作为名为 output.json 的文件写入本地计算机上的磁盘。
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Data.OleDb;
using System.Linq;
namespace ExcelToJSON
{
class Program
{
static void Main(string[] args)
{
var path = @"C:\Users\demir.mahmutovic\Desktop\aaa.xlsx";
string sheetName = "Sheet1";
var connstr = string.Format(@"
Provider=Microsoft.ACE.OLEDB.12.0;
Data Source={0};
Extended Properties=""Excel 12.0 Xml;HDR=YES""", path);
using (var conn = new OleDbConnection(connstr))
{
conn.Open();
var cmd = conn.CreateCommand();
cmd.CommandText = String.Format(@"SELECT * FROM [{0}$]",
sheetName
);
using (var rdr = cmd.ExecuteReader())
{
//LINQ query - when executed will create anonymous objects for each row
var query =
(from DbDataRecord row in rdr
select row).Select(x =>
{
//dynamic item = new ExpandoObject();
Dictionary<string, object> item = new Dictionary<string, object>();
item.Add(rdr.GetName(0), x[0]);
item.Add(rdr.GetName(1), x[1]);
item.Add(rdr.GetName(2), x[2]);
item.Add(rdr.GetName(3), x[3]);
item.Add(rdr.GetName(4), x[4]);
item.Add(rdr.GetName(5), x[5]);
item.Add(rdr.GetName(6), x[6]);
item.Add(rdr.GetName(7), x[7]);
item.Add(rdr.GetName(8), x[8]);
item.Add(rdr.GetName(9), x[9]);
item.Add(rdr.GetName(10), x[10]);
item.Add(rdr.GetName(11), x[11]);
item.Add(rdr.GetName(12), x[12]);
item.Add(rdr.GetName(13), x[13]);
item.Add(rdr.GetName(14), x[14]);
item.Add(rdr.GetName(15), x[15]);
item.Add(rdr.GetName(16), x[16]);
item.Add(rdr.GetName(17), x[17]);
item.Add(rdr.GetName(18), x[18]);
return item;
});
//Generates JSON from the LINQ query
var json = JsonConvert.SerializeObject(query);
var result = json;
Console.WriteLine(result);
Console.ReadLine();
//return json;
}
}
}
}
}
谁能指导我并告诉我这是否可能以及解决此问题的最佳方法是什么。我会非常感谢,
解决方案
您可以使用 StreamWriter ,我只是将日期添加到文件名,
using (StreamWriter file = new StreamWriter($"ToolBox_Log_" + DateTime.Now.ToString("dd_MM_yyyy_hh_mm") + ".Json", true))
{
file.WriteLine(result);
}
推荐阅读
- mongodb - 不能使用 MongoDB.Driver 的 LINQ 表达式重载包含 ProjectionDefinition
- flex-lexer - 使用 flex "||" 时无法匹配规则
- visual-studio-code - 飞镖消耗高cpu
- spring-boot - spring boot server.jetty.acceptors 和 spring boot server.tomcat.max-connections 默认个数是多少
- c# - 垂直线在图片上滚动
- python - 使用字典内的字典编写 CSV 文件
- javascript - 从数据库中获取后无法将值分配给变量
- vue.js - 如何将类绑定到vue中数组的最后一项
- ecmascript-6 - ES6 中的 Generators 和 yield 的工作机制
- python - Python Google Translate API 错误:如何翻译大量数据