Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.10.2016, 20:30   #1
PiroGOD
Пользователь
 
Регистрация: 11.10.2016
Сообщений: 12
Восклицание Сортировка пузырьком Json C#

Добрый вечер! Нужно Отсортировать Json файл методом ПУЗЫРЬКА C#
Есть такой Json файл, он не полный т.к большой список. Надо отсортировать по global_id.
Код:
[
    {
        "KC": "3",
        "Kod": "114521226",
        "Name": "База по ремонту бурового оборудования",
        "global_id": 63739355,
        "system_object_id": "114521226"
    },
    {
        "KC": "6",
        "Kod": "143314139",
        "Name": "Устройства вспомогательные и оборудование для подготовки образцов полимерных материалов",
        "global_id": 63741226,
        "system_object_id": "143314139"
    },
    {
        "KC": "5",
        "Kod": "143020544",
        "Name": "Инструменты и принадлежности для вычислительной техники",
        "global_id": 63740707,
        "system_object_id": "143020544"
    },
    {
        "KC": "2",
        "Kod": "142929556",
        "Name": "Агрегаты на базе червячных машин для переработки резиновых смесей",
        "global_id": 63735873,
        "system_object_id": "142929556"
    },
    {
        "KC": "8",
        "Kod": "142926571",
        "Name": "Оборудование для химической обработки",
        "global_id": 63740075,
        "system_object_id": "142926571"
    },
    {
        "KC": "5",
        "Kod": "124525731",
        "Name": "Хозяйство рыбоводное полносистемное прудовое",
        "global_id": 63732710,
        "system_object_id": "124525731"
    },
    {
        "KC": "4",
        "Kod": "163693020",
        "Name": "Инвентарь спортивный для водных видов спорта",
        "global_id": 63742130,
        "system_object_id": "163693020"
    },
PiroGOD вне форума Ответить с цитированием
Старый 11.10.2016, 20:39   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Странная задача, зачем методом пузырька?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 11.10.2016, 21:41   #3
PiroGOD
Пользователь
 
Регистрация: 11.10.2016
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Странная задача, зачем методом пузырька?
такое задание попалось на лабу
PiroGOD вне форума Ответить с цитированием
Старый 11.10.2016, 21:53   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Оно странное потому что основная часть (95+%) реализации будет состоять из чтения файла и парсинга JSON (и преобразовывания в строку JSON для записи обратно в конце).
Если уж студент осилил это, то сортировка пузырьком не составит труда, можно было бы и стандартный метод разрешить вызвать. Ну или добить и попросить QuickSort/MergeSort скопипастить из интернетов реализовать.

Да, так а вопрос-то в чем? Что именно не получается, что получается?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 11.10.2016, 22:11   #5
PiroGOD
Пользователь
 
Регистрация: 11.10.2016
Сообщений: 12
По умолчанию

Не знаю как пузырьком отсортировать.
Смог только считать из файла и сделать парсинг, потом выделил из массива строк - значение global_id - и массив индексов. Дальше не знаю что надо делать
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
using System.IO;
using Newtonsoft.Json.Linq;

namespace LabPi1_3
{
   
    class json
    {
        const string JsonText = "@";
        [JsonProperty(PropertyName = "KC")]
        public string KC { get; set; }

        [JsonProperty(PropertyName = "Kod")]
        public string Kod { get; set; }

        [JsonProperty(PropertyName = "Name")]
        public string Name { get; set; }

        [JsonProperty(PropertyName = "global_id")]
        public int global_id { get; set; }

        [JsonProperty(PropertyName = "system_object_id")]
        public string system_object_id { get; set; }


        public List<json> listJson { get; set; }
    }

    



    class Program
    {
        

        static void Main(string[] args)
        {
            
            
            string jsonString = File.ReadAllText(@"C:\Users\AsusPC\Desktop\Pi\Lab1\123.json");
            


            JArray array = JArray.Parse(jsonString);

            

           

            int[] codes = new int[array.Count];
            int[] indices = new int[array.Count];
            for (int index = 0; index < array.Count; index++)
            {
                codes[index] = (int)array[index]["global_id"];
                indices[index] = index;
            }


            

            /*//Ленивый способ без пузырька!!!!!!!
            Array.Sort(codes, indices);
            for (int index = 0; index < indices.Length; ++index)
            {
                Console.WriteLine(array[indices[index]]);
            }*/


            Console.WriteLine(array);
            
            Console.ReadKey();
        }
    }
}
PiroGOD вне форума Ответить с цитированием
Старый 11.10.2016, 22:19   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

А библиотекой для парсинга JSON точно можно пользоваться?

Для сортировки надо просто записать в любой массив/List<T> объекты и сравнивать по значению свойства global_id (вместо просто сравнения самих элементов массивов https://en.wikibooks.org/wiki/Algori..._sort#C.23_2.0, ну или реализовать IComparable у класса, чтоб можно сравнивать как в этом примере)

Только вы ж не получили пока экземпляры объектов своего класса, а только JArray. Смотрите документацию по библиотеке, там есть функции для получения своих объектов, с кучей примеров.

PropertyName кстати можно не писать если совпадает имя.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 11.10.2016 в 22:24.
Alex11223 вне форума Ответить с цитированием
Старый 11.10.2016, 22:30   #7
PiroGOD
Пользователь
 
Регистрация: 11.10.2016
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
А библиотекой для парсинга JSON точно можно пользоваться?
Да, можно.
Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Для сортировки надо просто записать в любой массив/List<T> объекты и сравнивать по значению свойства global_id (вместо просто сравнения самих элементов массивов https://en.wikibooks.org/wiki/Algori..._sort#C.23_2.0, ну или реализовать IComparable у класса, чтоб можно сравнивать как в этом примере)
А можно пример? Я не особо умею работать с List.
PiroGOD вне форума Ответить с цитированием
Старый 11.10.2016, 22:33   #8
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от PiroGOD Посмотреть сообщение
Я не особо умею работать с List.
Код:
var list = new List<MyClass>();
...
list.Add(myObj);

for (... i < list.Count ...)
    list[i].myProperty ...
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 11.10.2016, 22:35   #9
PiroGOD
Пользователь
 
Регистрация: 11.10.2016
Сообщений: 12
По умолчанию

Спасибо, завтра попробую разобраться
PiroGOD вне форума Ответить с цитированием
Старый 12.10.2016, 15:11   #10
PiroGOD
Пользователь
 
Регистрация: 11.10.2016
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Только вы ж не получили пока экземпляры объектов своего класса, а только JArray. Смотрите документацию по библиотеке, там есть функции для получения своих объектов, с кучей примеров.
Не могу найти нормальной документации по библиотеке newtonsoft.json
PiroGOD вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка пузырьком Катрин72 Помощь студентам 1 08.06.2012 12:55
сортировка пузырьком onezze Паскаль, Turbo Pascal, PascalABC.NET 0 09.04.2012 16:18
Сортировка пузырьком с++ FroLe Общие вопросы C/C++ 6 20.12.2010 01:23
Сортировка пузырьком Авторитет Общие вопросы .NET 4 15.11.2010 19:50