2016-08-18 41 views
1

解析JSON數據我在這個特定的格式,在這一切大約10,000響應的JSON響應基於局部構件響應

{"SessionName": "rdp-tcp", "userid": "TEST:3:09-48-16-04-48-00", "ComputerName": "SERVER1", "LogonTime": "2016-08-09T04:48:00"} 

我想能夠拉出來的是符合特定標準的答覆根據比賽的部分響應

例如什麼,我試圖讓一切是在4 am-5am

這可以通過能夠在下面的查詢來實現所發生的登錄:

"LogonTime": "2016-08-09T04:48:00" 

如何使用(例如,使用Javascript)與部分或startswith樣式查詢在JSON中進行匹配以提取符合特定塊文本的所有響應?

在此先感謝!

+2

你應該這樣做在服務器端。在前面你可以使用'Array.prototype.filter'來按條件過濾條目。 – Maxx

回答

3

您可以使用Array.prototype.filter()篩選基礎上,LogonTime你的陣列,獲得小時,Date.prototype.getUTCHours()

var json = [{ 
 
     "SessionName": "rdp-tcp", 
 
     "userid": "TEST:3:09-48-16-04-48-00", 
 
     "ComputerName": "SERVER1", 
 
     "LogonTime": "2016-08-09T02:48:00" 
 
    }, { 
 
     "SessionName": "rdp-tcp", 
 
     "userid": "TEST:3:09-48-16-04-48-00", 
 
     "ComputerName": "SERVER1", 
 
     "LogonTime": "2016-08-09T03:48:00" 
 
    }, { 
 
     "SessionName": "rdp-tcp", 
 
     "userid": "TEST:3:09-48-16-04-48-00", 
 
     "ComputerName": "SERVER1", 
 
     "LogonTime": "2016-08-09T04:48:00" 
 
    }], 
 
    arrResult = json.filter(function(elem) { 
 
     var date = new Date(elem.LogonTime), 
 
      hour = date.getUTCHours(); 
 
     return hour >= 4 && hour <= 5; 
 
    }); 
 

 
console.log(arrResult);

注意,如@Maxx在他的評論中指出,應實現這個邏輯在服務器端和性能做一些分頁,因爲10,000是一個非常大的數字。

+0

Hi Yosvel, 謝謝。我運行你的代碼來看看它是如何工作的,並在控制檯中產生一個空數組? – user2058234

+0

你的JSON是''對象''的數組嗎?可以嗎?你能說明它是怎麼回事? –

+0

嗨Yosvel,我從上面複製你的代碼到一個IDE,它只是返回一個空數組(當我點擊這裏運行代碼片段時也是如此)。我還沒有試圖將我的代碼應用到此,但我想看到上面的代碼運行的結果:) – user2058234

0

它是在JavaScript

  1. 首先轉換對象很簡單到一個數組。

  2. 使用每個功能和比較日期

var logons = []; 
 

 
yourObject.each(function (child){ 
 
    if(Date.parse(child['LogonTime']) > Date.parse('01/01/2011 04:00:00') && Date.parse(child['LogonTime']) > Date.parse('01/01/2011 5:00:00')){ 
 
    logons.push($(this)); 
 
} 
 
});

注:這段代碼沒有進行測試可能是你將得到語法錯誤