Есть Массив, который получен в виде JSON. Как прочитать и получить значения элементов вроде понятно.
Но получается так, что в ответе приходит только одна строка, хотя в массиве их 8.
Подскажите, как одним опросом вывести все элементы массива столбиком, а также отфильтровать строки , например в которых coef >= 0 или wID = 195
Данные JSON присутствуют в коде.
По одному значению COEF смог отфильтровать, а как быть, если задать для wID yнесколько условий с перечислением?
Но получается так, что в ответе приходит только одна строка, хотя в массиве их 8.
Подскажите, как одним опросом вывести все элементы массива столбиком, а также отфильтровать строки , например в которых coef >= 0 или wID = 195
Данные JSON присутствуют в коде.
Код:
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <ButtonConstants.au3>
#include <Array.au3>
#Include <Json.au3>
#include <Encoding.au3>
#include <Date.au3>
Global $chk=0
Global $j=0
Func Logging(ByRef $idTEXT,$whinfo)
local $editBefore = GuiCtrlRead($idTEXT)
GUICtrlSetData($idTEXT, $whinfo&@CRLF&$editBefore& " ")
EndFunc
Func Request()
local $cTime = @YEAR & "-" & @MON & "-" & @MDAY &" " & @HOUR & ":" & @MIN & ":" & @SEC &" "
local $dataX = ' [{"date":"2024-11-21T00:00:00Z","coef":-1,"wID":195,"Name":"Диски","tName":"Лето","tID":5},{"date":"2024-12-04T00:00:00Z","coef":-1,"wID":225,"Name":"Шины","tName":"Лето","tID":5},{"date":"2024-12-04T00:00:00Z","coef":0,"wID":225,"Name":"Шины","tName":"Зима","tID":6},{"date":"2024-12-04T00:00:00Z","coef":2,"wID":225,"Name":"Шины","tName":"Всесезонка","tID":2},{"date":"2024-11-21T00:00:00Z","coef":-1,"wID":195,"Name":"Диски","tName":"Лето","tID":5},{"date":"2024-11-30T00:00:00Z","coef":-1,"wID":225,"Name":"Шины","tName":"Лето","tID":5},{"date":"2024-11-25T00:00:00Z","coef":0,"wID":195,"Name":"Диски","tName":"Зима","tID":6},{"date":"2024-11-29T00:00:00Z","coef":2,"wID":225,"Name":"Шины","tName":"Всесезонка","tID":2}]'
local $resultX = Json_Decode($dataX)
if $chk = 1 Then
If IsArray($resultX) Then
For $j=0 to UBound($resultX)-1
$res = $cTime & " " & _DateTimeFormat(Json_Get($resultX,"[" & $j & "][date]"),2) & " " & Json_Get($resultX,"[" & $j & "][Name]") & " " & Json_Get($resultX,"[" & $j & "][coef]") & " " & Json_Get($resultX,"[" & $j & "][tName]")
ConsoleWrite($res & @CRLF)
local $whinfo = $res
local $editBefore = GuiCtrlRead($idTEXT)
GUICtrlSetData($idTEXT, $whinfo&@CRLF&$editBefore& " ")
Next
EndIf
Sleep(2000)
else
Exit
EndIf
EndFunc
Func CLOSEClicked()
Exit
EndFunc
Func OKButton()
local $cTime = @YEAR & "-" & @MON & "-" & @MDAY &" " & @HOUR & ":" & @MIN & ":" & @SEC &" "
if $chk = 0 Then
GUICtrlSetData($iOKButton,"Стоп")
$whinfo = $cTime & " Пошёл процесс!"
Logging($idTEXT,$whinfo)
$chk = 1
Sleep(1000)
AdlibRegister ("Request",3000)
else
AdlibUnRegister ("Request")
GUICtrlSetData($iOKButton,"Старт")
$whinfo =$cTime & " Мониторинг остановлен"
Logging($idTEXT,$whinfo)
$chk = 0
EndIf
EndFunc
Opt("GUIOnEventMode", 1) ;
Local $mainwindow = GUICreate("Мониторинг", 469, 339, (@DesktopWidth - 469) / 2, (@DesktopHeight - 339) / 2, $WS_OVERLAPPEDWINDOW + $WS_VISIBLE + $WS_CLIPSIBLINGS + $WS_POPUP + $WS_EX_TOOLWINDOW)
Opt("GUIResizeMode",802)
Local $hWnd = WinGetHandle("[ACTIVE]")
WinSetOnTop($hWnd, "", 1)
GUISetState(@SW_SHOW, $mainwindow)
Local $iOKButton = GUICtrlCreateButton("Старт", 380, 8, 60)
local $idTEXT = GUICtrlCreateEdit("", 30, 50, 420, 300, $ES_AUTOVSCROLL + $WS_VSCROLL + $ES_MULTILINE + $ES_WANTRETURN+$ES_READONLY)
GUICtrlSetTip(-1, "Мониторинг")
GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")
GUICtrlSetOnEvent($iOKButton, "OKButton")
while 1
sleep(10)
wend
Сообщение автоматически объединено:
По одному значению COEF смог отфильтровать, а как быть, если задать для wID yнесколько условий с перечислением?
Код:
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <ButtonConstants.au3>
#include <Array.au3>
#Include <Json.au3>
#include <Encoding.au3>
#include <Date.au3>
Global $chk=0
Global $j=0
Opt("GUIOnEventMode", 1) ;
Local $mainwindow = GUICreate("Мониторинг", 469, 339, (@DesktopWidth - 469) / 2, (@DesktopHeight - 339) / 2, $WS_OVERLAPPEDWINDOW + $WS_VISIBLE + $WS_CLIPSIBLINGS + $WS_POPUP + $WS_EX_TOOLWINDOW)
Opt("GUIResizeMode",802)
Local $hWnd = WinGetHandle("[ACTIVE]")
WinSetOnTop($hWnd, "", 1)
GUISetState(@SW_SHOW, $mainwindow)
Local $iOKButton = GUICtrlCreateButton("Старт", 380, 8, 60)
local $idTEXT = GUICtrlCreateEdit("", 30, 50, 420, 300, $ES_AUTOVSCROLL + $WS_VSCROLL + $ES_MULTILINE + $ES_WANTRETURN+$ES_READONLY)
GUICtrlSetTip(-1, "Мониторинг")
GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")
GUICtrlSetOnEvent($iOKButton, "OKButton")
while 1
sleep(10)
wend
Func Logging(ByRef $idTEXT,$whinfo)
local $editBefore = GuiCtrlRead($idTEXT)
GUICtrlSetData($idTEXT, $whinfo&@CRLF&$editBefore& " ")
EndFunc
Func Request()
local $cTime = @YEAR & "-" & @MON & "-" & @MDAY &" " & @HOUR & ":" & @MIN & ":" & @SEC &" "
local $dataX = ' [{"date":"2024-11-21T00:00:00Z","coef":-1,"wID":195,"Name":"Диски","tName":"Лето","tID":5},{"date":"2024-12-04T00:00:00Z","coef":-1,"wID":225,"Name":"Шины","tName":"Лето","tID":5},{"date":"2024-12-04T00:00:00Z","coef":0,"wID":225,"Name":"Шины","tName":"Зима","tID":6},{"date":"2024-12-04T00:00:00Z","coef":2,"wID":225,"Name":"Шины","tName":"Всесезонка","tID":2},{"date":"2024-11-21T00:00:00Z","coef":-1,"wID":195,"Name":"Диски","tName":"Лето","tID":5},{"date":"2024-11-30T00:00:00Z","coef":-1,"wID":225,"Name":"Шины","tName":"Лето","tID":5},{"date":"2024-11-25T00:00:00Z","coef":0,"wID":195,"Name":"Диски","tName":"Зима","tID":6},{"date":"2024-11-29T00:00:00Z","coef":2,"wID":225,"Name":"Шины","tName":"Всесезонка","tID":2}]'
local $resultX = Json_Decode($dataX)
if $chk = 1 Then
If IsArray($resultX) Then
For $j=0 to UBound($resultX)-1
$res = $cTime & " " & _DateTimeFormat(Json_Get($resultX,"[" & $j & "][date]"),2) & " " & Json_Get($resultX,"[" & $j & "][Name]") & " " & Json_Get($resultX,"[" & $j & "][coef]") & " " & Json_Get($resultX,"[" & $j & "][tName]")
ConsoleWrite($res & @CRLF)
local $whinfo = $res
local $editBefore = GuiCtrlRead($idTEXT)
GUICtrlSetData($idTEXT, $whinfo&@CRLF&$editBefore& " ")
Next
EndIf
Sleep(2000)
else
Exit
EndIf
EndFunc
Func CLOSEClicked()
Exit
EndFunc
Func OKButton()
local $cTime = @YEAR & "-" & @MON & "-" & @MDAY &" " & @HOUR & ":" & @MIN & ":" & @SEC &" "
if $chk = 0 Then
GUICtrlSetData($iOKButton,"Стоп")
$whinfo = $cTime & " Пошёл процесс!"
Logging($idTEXT,$whinfo)
$chk = 1
Sleep(1000)
AdlibRegister ("Request",3000)
else
AdlibUnRegister ("Request")
GUICtrlSetData($iOKButton,"Старт")
$whinfo =$cTime & " Мониторинг остановлен"
Logging($idTEXT,$whinfo)
$chk = 0
EndIf
EndFunc
Последнее редактирование: