我一直在查指南,但不知道在这里该怎么做. 我有一个很大的TXT文件,需要将其转换为JSON.
但是,根据一行的前3个字符,该行的其余部分适用不同的规则.
case 示例:
001010100092019051513040000000000000000201905150000Skovharevej Skovharevej
001010100102019051513040000000000000000201905150000Svalehalevej Svalehalevej
00401010013001 001 U2018092921102150Nordhavn
00901010013001 001 U20220114101618Hans Egedes
01301010013001 001 U2022011410167046Hans Egedes,Kbhvn
01401010013001 001 U202201141016561. Øst
如果文本行以001开头,则类型为道路
- 第一个3是类型代码
- 接下来的4个是通信代码
- 下一个4是道路代码
- 接下来的12个是时间戳
- 下一个4是通往下一个通信代码的道路
- 下一个4是通往下一个道路代码的道路
- 接下来的4个是前一个社区代码中的道路
- 下一个4是先前道路代码中的道路
- 下一个12点是开始日期
- 接下来的20个是路名
- 下一个40是扩展的道路名称
现在,如果类型为004
- 然后前3个是类型
- 接下来的4个是通信代码
- 下一个4是道路代码
- 下一个4是门牌号
- 下一个4是门牌号
- 下一个1是房号是偶数还是偶数
- 接下来的12个是时间戳
- 下一个4是邮政编码
- 接下来20个是邮政区
因此,根据上述信息重申.
-
我需要在C#中输入一个txt文件
-
然后读每一行
var lines = File.ReadLines(fileName); foreach (var line in lines)
-
然后我必须阅读前3个字符,并根据这些确定它是什么类型.
-
然后,我必须通过一个特定的规则拆分来处理这条线
-
并最终输出JSON文件
下面的解决方案
控制器
public class Convert控制器
{
public void convertTxtFile()
{
var filename = "C:\\A370715.txt";
var lines = File.ReadLines(filename);
string jsonString = "";
if (!File.Exists("C:\\path.json"))
{
TextWriter tsw = new StreamWriter(@"C:\path.json", true);
foreach (var line in lines)
{
System.Console.WriteLine(line);
var code = line.Substring(0, 3);
System.Console.WriteLine($"Code: {code}");
switch (code)
{
case "001":
班级001 c001 = new 班级001(line);
jsonString = JsonSerializer.Serialize(c001);
tsw.WriteLine(jsonString);
System.Console.WriteLine(jsonString);
break;
case "002":
班级002 c002 = new 班级002(line);
jsonString = JsonSerializer.Serialize(c002);
tsw.WriteLine(jsonString);
System.Console.WriteLine(jsonString);
break;
case "003":
班级003 c003 = new 班级003(line);
jsonString = JsonSerializer.Serialize(c003);
tsw.WriteLine(jsonString);
System.Console.WriteLine(jsonString);
break;
case "004":
班级004 c004 = new 班级004(line);
jsonString = JsonSerializer.Serialize(c004);
tsw.WriteLine(jsonString);
System.Console.WriteLine(jsonString);
break;
case "005":
班级005 c005 = new 班级005(line);
jsonString = JsonSerializer.Serialize(c005);
tsw.WriteLine(jsonString);
System.Console.WriteLine(jsonString);
break;
case "006":
班级006 c006 = new 班级006(line);
jsonString = JsonSerializer.Serialize(c006);
tsw.WriteLine(jsonString);
System.Console.WriteLine(jsonString);
break;
case "007":
班级007 c007 = new 班级007(line);
jsonString = JsonSerializer.Serialize(c007);
tsw.WriteLine(jsonString);
System.Console.WriteLine(jsonString);
break;
case "008":
班级008 c008 = new 班级008(line);
jsonString = JsonSerializer.Serialize(c008);
tsw.WriteLine(jsonString);
System.Console.WriteLine(jsonString);
break;
case "009":
班级009 c009 = new 班级009(line);
jsonString = JsonSerializer.Serialize(c009);
tsw.WriteLine(jsonString);
System.Console.WriteLine(jsonString);
break;
case "010":
班级010 c010 = new 班级010(line);
jsonString = JsonSerializer.Serialize(c010);
tsw.WriteLine(jsonString);
System.Console.WriteLine(jsonString);
break;
case "011":
班级011 c011 = new 班级011(line);
jsonString = JsonSerializer.Serialize(c011);
tsw.WriteLine(jsonString);
System.Console.WriteLine(jsonString);
break;
case "012":
班级012 c012 = new 班级012(line);
jsonString = JsonSerializer.Serialize(c012);
tsw.WriteLine(jsonString);
System.Console.WriteLine(jsonString);
break;
case "013":
班级013 c013 = new 班级013(line);
jsonString = JsonSerializer.Serialize(c013);
tsw.WriteLine(jsonString);
System.Console.WriteLine(jsonString);
break;
case "014":
班级014 c014 = new 班级014(line);
jsonString = JsonSerializer.Serialize(c014);
tsw.WriteLine(jsonString);
System.Console.WriteLine(jsonString);
break;
case "015":
班级015 c015 = new 班级015(line);
jsonString = JsonSerializer.Serialize(c015);
tsw.WriteLine(jsonString);
System.Console.WriteLine(jsonString);
break;
case "016":
班级016 c016 = new 班级016(line);
jsonString = JsonSerializer.Serialize(c016);
tsw.WriteLine(jsonString);
System.Console.WriteLine(jsonString);
break;
default:
System.Console.WriteLine($"What to do with code: {code} ?");
break;
}
}
System.Console.WriteLine("Convert is finished");
} else { System.Console.WriteLine("File already exist please remove file before creating a new one!"); }
}
}
班级
public class 班级001
{
public string type { get; set; }
public string kommuneCode { get; set; }
public string roadCode { get; set; }
public string timestamp { get; set; }
public string roadToNextKommuneCode { get; set; }
public string roadToNextRoadCode { get; set; }
public string roadToPreviousKommuneCode { get; set; }
public string roadToPreviousRoadCode { get; set; }
public string startDate { get; set; }
public string roadName { get; set; }
public string ExpandedRoadName { get; set; }
public 班级001(string s)
{
this.type = s.Substring(0, 3);
this.kommuneCode = s.Substring(3, 4);
this.roadCode = s.Substring(7, 4);
this.timestamp = s.Substring(11, 12);
this.roadToNextKommuneCode = s.Substring(23, 4);
this.roadToNextRoadCode = s.Substring(27, 4);
this.roadToPreviousKommuneCode = s.Substring(31, 4);
this.roadToPreviousRoadCode = s.Substring(35, 4);
this.startDate = s.Substring(39, 12);
this.roadName = s.Substring(51, 20);
this.ExpandedRoadName = s.Substring(71, 40);
}
}