using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using LitJson;
using Newtonsoft.Json;
namespace weiCmd
{
public class Program
{
static void Main(string[] args)
{
string JsonFileName = "";
Wei wei = new Wei();
string FileName;
FileName = @" C:\Users\Administrator\Desktop\测试表.csv";
string strJSON = wei.WeiCsv2JSON(FileName);
strJSON = wei.WeiCsv2JsonMessageWeiJson(strJSON);
JsonFileName = FileName.Substring(0, FileName.Length - 4) + ".json";
StreamWriter sw = new StreamWriter(JsonFileName);
sw.WriteLine(strJSON);
sw.Flush();
sw.Close();
string str = wei.ReadFileToString(JsonFileName);
Console.WriteLine("打印将要转换成json对象的字符串");
Console.WriteLine(str);
WeiJsonStruct WeiJsonObject = wei.JsonStr2Struct(str);
wei.WeiStruct2JsonStr(WeiJsonObject);
wei.WeiStruct2csvStr(WeiJsonObject);
Console.ReadLine();
}
}
public class Wei
{
public string WeiCsv2JSON(string file)
{
string weiJSONstr = "";
FileStream fs = new FileStream(file, FileMode.Open, FileAccess.Read);
StreamReader sr = new StreamReader(fs, Encoding.Default);
string[] tou = sr.ReadLine().Split(',');
string hangStr;
weiJSONstr += "[";
while ((hangStr = sr.ReadLine()) != null)
{
string[] hang = hangStr.Split(',');
for (int i = 0; i < tou.Length; i++)
{
if (i == 0)
{
weiJSONstr += "{\"" + tou[i] + "\":\"" + hang[i] + "\",";
}
else if (i == tou.Length - 1)
{
weiJSONstr += "\"" + tou[i] + "\":\"" + hang[i] + "\"}," +
"";
}
else
{
weiJSONstr += "\"" + tou[i] + "\":\"" + hang[i] + "\",";
}
}
}
weiJSONstr = weiJSONstr.Substring(0, weiJSONstr.Length - 1) + "]";
sr.Close();
Console.WriteLine("打印csv文件转换成的json字符串------------------------------------");
Console.WriteLine(weiJSONstr);
return weiJSONstr;
}
public string WeiCsv2JsonMessageWeiJson(string str)
{
string s;
s = "{ \"message\":\"一个JSON字段的值\",\"WeiJson\":";
s = s + str + "}";
Console.WriteLine("打印包装lmessage和WeiJson关键子的JSON字符串------------------------------------");
Console.WriteLine(s);
return s;
}
public WeiJsonStruct JsonStr2Struct(string str)
{
WeiJsonStruct WeiJsonObject = JsonMapper.ToObject<WeiJsonStruct>(str);
List<WeiHangType> list = WeiJsonObject.WeiJson;
Console.WriteLine(list[0].name + "----------");
return WeiJsonObject;
}
public string WeiStruct2JsonStr(WeiJsonStruct WeiJsonObject)
{
string s = "";
s = JsonMapper.ToJson(WeiJsonObject);
Console.WriteLine("打印从结构体转成的字符串----------------------------");
Console.WriteLine(s);
return s;
}
public string WeiStruct2csvStr(WeiJsonStruct WeiJsonObject)
{
string s = "";
s = "name,age,work01,work02,work03,work04,work05,work06\n";
foreach (WeiHangType hang in WeiJsonObject.WeiJson)
{
s += hang.name+","+hang.age + "," + hang.work01 + "," + hang.work02 + "," + hang.work03 + "," + hang.work04 + "," + hang.work05 + "," + hang.work06+"\n";
}
Console.WriteLine("打印由json结构体生成的csv文件字符串----------------------------------------");
Console.WriteLine(s);
return s;
}
public string ReadFileToString(string fileName)
{
string s = "";
StreamReader sr = new StreamReader(fileName);
string hang;
while ((hang = sr.ReadLine()) != null)
{
s += hang;
}
Console.WriteLine("打印json文件读出来的字符串------------------------------------");
Console.WriteLine(s);
return s;
}
}
[System.Serializable]
public class WeiHangType
{
public string name { get; set; }
public string age { get; set; }
public string work01 { get; set; }
public string work02 { get; set; }
public string work03 { get; set; }
public string work04 { get; set; }
public string work05 { get; set; }
public string work06 { get; set; }
}
[System.Serializable]
public class WeiJsonStruct
{
public string message;
public List<WeiHangType> WeiJson;
}
}
name,age,work01,work02,work03,work04,work05,work06
用户01,valueB2,valueC2,valueD2,valueE2,valueF2,valueG2,valueH2
用户02,valueB3,valueC3,valueD3,valueE3,valueF3,valueG3,valueH3
用户03,valueB4,valueC4,valueD4,valueE4,valueF4,valueG4,valueH4
用户04,valueB5,valueC5,valueD5,valueE5,valueF5,valueG5,valueH5
用户05,valueB6,valueC6,valueD6,valueE6,valueF6,valueG6,valueH6
用户06,valueB7,valueC7,valueD7,valueE7,valueF7,valueG7,valueH7
用户07,valueB8,valueC8,valueD8,valueE8,valueF8,valueG8,valueH8
用户08,valueB9,valueC9,valueD9,valueE9,valueF9,valueG9,valueH9
用户09,valueB10,valueC10,valueD10,valueE10,valueF10,valueG10,valueH10