Форум программистов, компьютерный форум, киберфорум
Java EE (J2EE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
98 / 10 / 0
Регистрация: 21.02.2011
Сообщений: 474

Работа с json есть сложности

23.10.2018, 08:11. Показов 700. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день,
Имеется Json следующего вида:
JSON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
{"ListOfRecognized":
    [
        {
        "ImageFile":"1-Roman_Solodov_15.jpg",
        "IfEmployee":"No","ID":"1",
        "TimeWasAppear":2018-10-22 14:48:16.917
    },
        {
        "ImageFile":"2-Mark_Gurevich_15.jpg",
        "IfEmployee":"No","ID":"2",
        "TimeWasAppear":2018-10-22 14:48:24.279
    },
        {
        "ImageFile":"3-Stanley_Travers_15.jpg",
        "IfEmployee":"No","ID":"3",
        "TimeWasAppear":2018-10-22 14:48:30.266
    }
           И так далее
    ],
    "comment":"ReservedForFuture"
}
Формируется следующим образом:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public static JSONObject obj = new JSONObject(); 
String JsonToSend = JSONAssembeling (ID, Name, LastName, IfEmployee, "No", ts);
где ID, Name, LastName, IfEmployee - некоторый строковые константы а ts - соответственно метка времени
.....
public String JSONAssembeling (String ID, String Name, String LastName, String IfEmployee, String IfRemove, Timestamp Current) 
{
  String Fname = ID + "-" + Name + "_" + LastName + "_15.jpg";
  list.add(list.size(), (getChild(ID, Fname, IfEmployee, Current)));
  obj.put("ListOfRecognized", list);
  obj.put("comment", "ReservedForFuture");
  String JsonAsStr = obj.toJSONString();
  return JsonAsStr;
}
 
public static JSONObject getChild(String s1,String s2, String s3, Timestamp s4) 
    {
        JSONObject ob = new JSONObject();
        ob.put("ID",s1);
        ob.put("ImageFile",s2);
        ob.put("IfEmployee",s3);
        ob.put("TimeWasAppear",s4);
        return ob;
    }
obj - доступна в любой функции класса.
В этом же классе есть у меня таймер вызывающий любую функцию раз в период
Вопрос вот какой:
Как удалять из json те записи в которой параметр "TimeWasAppear" Старше 15 минут - запись была добавлена более 15 минут назад?
Большое спасибо за неоднократную помощь.

Добавлено через 45 секунд
таймстемпы в кавычках.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.10.2018, 08:11
Ответы с готовыми решениями:

Сложности с гибкостью json reader
Добрый вечер, есть код int RKJsonReader::getInt(const char* node, const int iterator, const char* key, int def/* = 0*/) { ...

Сложности с кодировкой кириллицы и JSON
Вот такой код: $q=mysql_query("SELECT * FROM `dictionary`"); mysql_fetch_array($q); while($e=mysql_fetch_assoc($q)) ...

Spring REST, Hibernate. Сложности десериализации JSON при one-to-many
Всем добрый день. Возникла проблема, подходящее решение которой никак не нагуглю. Делаю REST API на Spring и Hibernate. При попытке...

2
 Аватар для HighPredator
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
23.10.2018, 10:30
1) Берете текущий таймстемп.
2) Отнимаете от него 15 минут. Это даст вам таймстемп с которым вы будете сравнивать.
3) Парсите таймстемп из строки (или какой там тип у вас) джейсонова объекта.
4) Сравниваете
5) Профит!
0
98 / 10 / 0
Регистрация: 21.02.2011
Сообщений: 474
24.10.2018, 02:27  [ТС]
Приветствую.
Внутри таймера - вызов переодически я делаю следующее
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
JSONObject CurrentLine = new JSONObject();
    public Timer timer = new Timer(10000, new ActionListener()
    {
        @Override
        public void actionPerformed(ActionEvent arg0) 
        {   
            System.out.println("Json Was cheched"); //Here all action to make once in period
            for (int i = 0; i < list.size(); i++)
            {   
                CurrentLine = list.get(i);
                System.out.println("Current line for timer is: " + CurrentLine); 
                                //Это должно дать возможность перебирать строки по одной - впрочем не работает. 
                                //Далее я не знаю как бы проверять таймстемп в этой строке и если CurrentTimestamp - Timestamp > 15 мин удалить CurrentLine
            }
            
        }
    });
Добавлено через 19 минут
Вот если так,
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public Timer timer = new Timer(10000, new ActionListener()
    {
        String CurrentLine;
        @Override
        public void actionPerformed(ActionEvent arg0) 
        {   
            System.out.println("Json Was cheched"); //Here all action to make once in period
            for (int i = 0; i < list.size(); i++)
            {   
                CurrentLine = list.get(i).toString();
                System.out.println("Current line for timer is: " + CurrentLine);
            }
            
        }
    });
То вывод вполне правилиный, А именно:
Bash
1
2
3
Json Was cheched
Current line for timer is: {"ImageFile":"1-Roman_Solodov_15.jpg","IfEmployee":"Yes","ID":"1","TimeWasAppear":"2018-10-23 13:15:38.299"}
Current line for timer is: {"ImageFile":"3-Stanley_Travers_15.jpg","IfEmployee":"Yes","ID":"3","TimeWasAppear":"2018-10-23 13:15:43.61"}
То есть все нормально, 2 строки в списке обе нормально выведены
Но как строки, а не как Json объекты, и проверить элемент Таймстемп или 3 при нумерации с 0 все равно никак.

Добавлено через 38 минут
Так, Господа, лед тронулся и не только лед.
Вообщем заменил Jar с json-simple.jar на java-json.jar.
Поправил везде методы (они называются иначе) add - put, length() - size() ну и так далее и вот у меня уже доступны методы которые нужны. Могу дорваться до необходимых значений. Вот фрагмент:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public Timer timer = new Timer(10000, new ActionListener()
    {
        String CurrentLine;
        JSONObject CurrentLineObj = new JSONObject();
        @Override
        public void actionPerformed(ActionEvent arg0) 
        {   
            System.out.println("Json Was cheched"); //Here all action to make once in period
            for (int i = 0; i < list.length(); i++)
            {   
                try {
                    CurrentLine = list.get(i).toString();
                    CurrentLineObj = list.getJSONObject(i);
                } catch (JSONException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                System.out.println("Current line for timer is: " + CurrentLineObj);
            }
            
        }
    });
Bash
1
2
3
4
Json Was cheched
Current line for timer is: {"ImageFile":"1-Roman_Solodov_15.jpg","IfEmployee":"Yes","ID":"1","TimeWasAppear":"2018-10-23 13:55:18.076"}
Current line for timer is: {"ImageFile":"2-Mark_Gurevich_15.jpg","IfEmployee":"Yes","ID":"2","TimeWasAppear":"2018-10-23 13:55:29.693"}
Current line for timer is: {"ImageFile":"3-Stanley_Travers_15.jpg","IfEmployee":"Yes","ID":"3","TimeWasAppear":"2018-10-23 13:55:31.881"}
Добавлено через 2 часа 28 минут
Вообщем вот причесанная версия. Кот вдруг столкнется с такой проблемой - решение есть

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public Timer timer = new Timer(10000, new ActionListener()
    {
        JSONObject CurrentLineObj = new JSONObject();
        String CurrentLineTs;
        
        Date DateForTimer = new Date();
        long TimeForTimer = DateForTimer.getTime(); 
        Timestamp TimeForTimerTS = new Timestamp(TimeForTimer);
        
        @Override
        public void actionPerformed(ActionEvent arg0) 
        {   
            System.out.println("Json Was checked"); //Here all action to make once in period
            for (int i = 0; i < list.length(); i++)
            {   
                    try 
                    {
                        CurrentLineObj = list.getJSONObject(i);                      //Get linefrom JSON
                        CurrentLineTs = CurrentLineObj.getString("TimeWasAppear");   //Get TimeStamp from the line 
                    } 
                    catch (JSONException e) 
                    {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }                      
                    System.out.println("*** TimeForTimerTS = " + TimeForTimerTS + " CurrentLineTs = " + CurrentLineTs +" ***");
            }
            
        }
    });
Остался вопрос не относящийся к теме как сравнитьтаймстемпы

Добавлено через 2 минуты
вывод:
Bash
1
2
Json Was checked
*** TimeForTimerTS = 2018-10-23 16:16:58.112 CurrentLineTs = 2018-10-23 16:17:10.729 ***
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.10.2018, 02:27
Помогаю со студенческими работами здесь

Работа с Json. Нужно 3 координаты вывести в отдельный Json файл и вызвать его при нажатии на кнопку.
Здравствуйте дорогие форумчане. Нужна ваша помощь, в массиве имеется три координаты и их описание которые при наведение на них...

Массивы. Есть сложности
Помогите решить пожалуйста дан массив Y1.....Y15. Построить 2 новых ряда, состоящие из чётных и нечётных по номерам Y i . Определить...

Есть ли какой-нибудь набор задач, отсортированных по сложности
Сложно что-то изучать без практики. Есть ли какой-нибудь набор задач, отсортированных по сложности, ориентированных именно на...

Я пользуюсь программой matlab недолго, есть сложности в освоении.
Фирма взяла кредит 600000 на приобретение грузовиков 3-х типов. Их стоимость 10000, 20000 и 23000. Сколько грузовиков каждого типа нужно...

Требуется любая графическая сделанная работа средней сложности
Прошу вас отправить любое графическое сделанное задание в Mathcad (Средней сложности). Преподаватель по компьютерной графике сказал...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Реалии.
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Реалии.
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru