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);
}
Я сделал преобразование из csv в json. Вывод данных json находится в FINALJSON. Теперь из FINALJSON мне нужно получить только необходимые поля.
Это мои данные:
[{"Ccsv":"S124","Profit":"1240025","Cost_Center_Code":"124002503","Description":"test","Status":"","Responsible_Person_Owner":"20041882"},{"Ccsv":"S136","Profit":"1360007","Cost_Center_Code":"136000799","Description":"Default Payroll","Status":"","Responsible_Person_Owner":"SSC"},{"Ccsv":"S800","Profit":"8000001","Cost_Center_Code":"800000201","Description":"SercoCaledonianSl2","Status":"","Responsible_Person_Owner":"20120730"},{"Ccsv":"s802","Profit":"8000002","Cost_Center_Code":"8.00E+58","Description":"sdfergfertxzfcx","Status":"","Responsible_Person_Owner":"3641212"}\]
Мне нужно получить только столбцы csv и profit.
Спасибо. Но если в будущем мне понадобятся другие столбцы, я не могу понять. поэтому сначала мне нужно преобразовать все в json и отфильтровать. В надежде помочь мне
я преобразовал .csv в данные json. но я хочу знать, как фильтровать данные json, присутствующие в FINALJSON, и получать вывод только из двух столбцов.
Итак, вы где-то сохраняете JSON, который был преобразован из CSV, а затем фильтруете его, чтобы создать второй документ JSON только с двумя свойствами?
да. я сохраняю этот результат в FINALJSON. Теперь мне нужно отфильтровать данные FINALJSON и получить необходимые свойства во втором результате.
@Tej, попробуйте мой ответ, чтобы больше не получать ошибку, с которой вы столкнулись сейчас, и дайте мне знать :)
@er-sho обязательно постараюсь и дам вам знать.
Я надеюсь, что это сработает для вас.
JObject obj = JObject.Parse(json);
var ccsv=obj.SelectToken("Ccsv");
var profit=obj.SelectToken("Profit");
Спасибо большое . я постараюсь и дам вам знать
Ошибка чтения Jobject из jsonreader. текущий элемент jsonreader не является объектом: начальный массив", строка 1, позиция 1 ...................... я получил эту ошибку. что мне теперь делать
Кажется, что ваш 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());
Примечание: Вам необходимо добавить пакет nuget newtonsoft.json из консоли диспетчера пакетов, а затем импортировать пространство имен using Newtonsoft.Json.Linq;
в вашу программу.
Выход:
Спасибо. Я попробую. Но дело в том, что окончательный результат также будет в формате пары JSON KEY VALUE.
@Tej, просмотрите раздел Изменить 1 в ответе.
Конечно, я постараюсь сообщить вам как можно скорее
@Tej, я обновил свой ответ, чтобы он более точно соответствовал вашим потребностям. с удаленным другим несвязанным кодом. :)
Еще одна вещь, которую я использую веб-приложение, окончательные данные должны храниться в файле, а не отображаться на консоли.
Откуда взялся этот json, потому что опубликованный json, о котором идет речь, не соответствует вашему выше прокомментированному json.
Попробуйте это для нового json => var result = jArray.Select(x => new { Ccsv = x["Company_Code"], Profit = x["Profit_center"] }).ToList();
Чтобы сохранить вывод json в файл при подаче => File.WriteAllText("Output file path on server", outputJArray.ToString());
окончательный код, который вы дали, работает нормально. Спасибо большое #Чемпион
Пожалуйста, отметьте галочкой слева от ответа, чтобы он стал зеленым
закомментированный код появляется во время преобразования .csv в json и до сериализации. во всяком случае до работает нормально. я буду пинговать, если что.
Если вам нужны только ccsv и прибыль, почему вы не фильтруете это перед сериализацией в JSON? Кажется, что много потраченных усилий.