C# 将.csv文件完全转换为Json数据,并在Json数据中进行过滤 for(int i=1;i

C# 将.csv文件完全转换为Json数据,并在Json数据中进行过滤 for(int i=1;i,c#,json,C#,Json,我做了一个从csv到json的转换。json数据的输出是FINALJSON。现在,从FINALJSON开始,我只需要获得必需的字段 这是我的数据: [{“Ccsv”:“S124”,“利润”:“1240025”,“成本中心代码”:“124002503”,“说明”:“测试”,“状态”:“负责人所有者”:“20041882”},{“Ccsv”:“S136”,“利润”:“1360007”,“成本中心代码”:“136000799”,“说明”:“默认工资单”,“状态”:“负责人所有者”:“SSC”},{“

我做了一个从csv到json的转换。json数据的输出是FINALJSON。现在,从FINALJSON开始,我只需要获得必需的字段


这是我的数据:

[{“Ccsv”:“S124”,“利润”:“1240025”,“成本中心代码”:“124002503”,“说明”:“测试”,“状态”:“负责人所有者”:“20041882”},{“Ccsv”:“S136”,“利润”:“1360007”,“成本中心代码”:“136000799”,“说明”:“默认工资单”,“状态”:“负责人所有者”:“SSC”},{“Ccsv”:“S800”,“利润”:“8000001”,“成本中心代码”:“800000201”、“描述”:“SERCOCALEDONISL2”、“状态”:“责任人”所有者”:“20120730”}、{“Ccsv”:“s802”、“利润”:“80000002”、“成本中心代码”:“8.00E+58”、“描述”:“sdfergfertxzfcx”、“状态”:“责任人所有者”:“3641212”}\]


我只需要获取csv和利润栏。

我希望它能为您提供帮助

for (int i = 1; i < lines.Length; i++) {
  var objResult = new Dictionary<string, string>();

  for (int j = 0; j < props.Length; j++) {
    objResult.Add(props[j], csv[i][j]);
    listObjResult.Add(objResult);
  }

  string FINALJSON = JsonConvert.SerializeObject(listObjResult);
}

您的JSON似乎是一个对象数组,您只想从中检索两个字段,这样您就可以尝试下面的代码了

JObject obj = JObject.Parse(json);
var ccsv=obj.SelectToken("Ccsv");
var profit=obj.SelectToken("Profit");
注意:您需要从package manager控制台添加newtonsoft.json nuget包,然后使用newtonsoft.json.Linq;
名称空间导入程序

输出:


如果您只需要ccsv和profit,为什么不在序列化为JSON之前过滤这些内容?这似乎是浪费了很多精力。谢谢。但是如果将来需要其他列,我就不能正确地使用。因此,首先我需要将整列转换为JSON并进行过滤。希望能帮助我将.csv转换为JSON数据。但我想知道如何过滤js关于FINALJSON中存在的数据并仅获得两列的输出SSO您是否将从CSV转换的JSON保存在某个位置,然后对其进行过滤以生成第二个仅包含两个属性的JSON文档?是的。我将该结果存储在FINALJSON中。现在我需要过滤FINALJSON数据并在第二个结果中获得所需的属性非常感谢。我将尝试让您知道从jsonreader读取Jobject时出错。当前jsonreader项不是对象:开始数组”,第1行,位置1。。。。。。。。。。。。。。。。。。。。。我犯了这个错误。我现在要做的是谢谢你。我试试看。但问题是,最终结果也是JSON键值对格式。@Tej,在回答中查看编辑1部分。当然,我会尝试尽快让您知道您给出的最终代码运行良好。非常感谢#champion注释代码是在.csv到json转换过程中出现的,并且是在序列化之前。不管怎样,以前的工作很好。如果有的话,我会的。
string json = FINALJSON;

JArray jArray = JArray.Parse(json);

var result = jArray.Select(x => new { Ccsv = x["Ccsv"], Profit = x["Profit"] }).ToList();

JArray outputJArray = JArray.FromObject(result);

//---------------Print result to console---------------

Console.WriteLine(outputJArray.ToString());