2015-01-05 2 views
0

У меня есть сценарий для извлечения данных из CA Introscope. Скрипт выводит значения, как это:конвертировать json в кадр данных как вывод в python

print data 

[(TimesliceGroupedMetricData){ 
    metricData[] = 
     (MetricData){ 
     agentName = "web01|WEB|instance_01" 
     metricName = "WebSpherePMI|orbPerfModule:ConcurrentRequestCount" 
     metricType = 258 
     metricValue = "0" 
     }, 
     (MetricData){ 
     agentName = "app01|APP|instnace_03" 
     metricName = "WebSpherePMI|beanModule|mobile.jar:ReturnsToPoolCount" 
     metricType = 258 
     metricValue = "3" 
     }, 
     (MetricData){ 
     agentName = "app02|APP|instance_02" 
     metricName = "JSP|add_client:Stall Count" 
     metricType = 385 
     metricValue = "0" 
     }, 
     (MetricData){ 
     agentName = "web05|WEB|instance_02" 
     metricName = "WebSpherePMI|beanModule|bizlogic#bizlogic.jar|ejb.entity|WorkStepInstanceEBBBean:ReadyCount" 
     metricType = 258 
     metricValue = "0" 
     }, 
    timesliceEndTime = 2015-01-05 16:33:15 
    timesliceStartTime = 2015-01-05 16:28:15 


}] 

мне нужен этот вывод на печать, как это:

metricName, AppName, ServerName, Имя_экземпляра, Value, timesliceEndTime

фактические данные:

WebSpherePMI|orbPerfModule:ConcurrentRequestCount, WEB, web01,instance_01, 0, 2015-01-05 16:33:15 
WebSpherePMI|beanModule|mobile.jar:ReturnsToPoolCount,APP,app01,instance_02,3, 2015-01-05 16:33:15 
JSP|add_client:Stall Count, APP, app02,instance_02,0, 2015-01-05 16:33:15 
WebSpherePMI|beanModule|bizlogic#bizlogic.jar|ejb.entity|WorkStepInstanceEBBBean:ReadyCount, WEB, web05, insntance02, 0, 2015-01-05 16:33:15 

I место запятая, чтобы разделить поле выхода, но не нужно. Может ли кто-нибудь дать мне некоторую путеводную линию, как это сделать в python?

+6

извините, но это не – MightyPork

+0

@MightyPork JSON, вы правы извините. Это структура данных, которые я получаю. – user1471980

+0

Откуда берутся ваши данные? – MattDMo

ответ

2

Хорошо, так вот. Я сделал фиктивный класс и заполнил его вашими данными, поэтому он проверен на это, YMMV.

def dumpDataBlob(blob): 
    """ Print data object in required format """ 

    timesliceEndTime = blob.timesliceEndTime 

    for entry in blob.metricData: 
     # gather values 
     metricName = entry.metricName 
     metricValue = entry.metricValue 
     (serverName, appName, instanceName) = entry.agentName.split('|') 

     print('{met},{app},{ser},{ins},{val},{tim}'.format(
      met=metricName, 
      app=appName, 
      ser=serverName, 
      ins=instanceName, 
      val=metricValue, 
      tim=timesliceEndTime)) 

Вот мои тестовые классы, FYI

class MetricData: 
    def __init__(self, agentName, metricName, metricType, metricValue): 
     self.agentName = agentName 
     self.metricName = metricName 
     self.metricType = metricType 
     self.metricValue = metricValue 

class DummyObject: 
    metricData = [] 

    def __init__(self): 
     self.metricData = [] 

     self.metricData.append(MetricData(
      agentName = "web01|WEB|instance_01", 
      metricName = "WebSpherePMI|orbPerfModule:ConcurrentRequestCount", 
      metricType = 258, 
      metricValue = "0" 
     )) 

     self.metricData.append(MetricData(
      agentName = "app01|APP|instnace_03", 
      metricName = "WebSpherePMI|beanModule|mobile.jar:ReturnsToPoolCount", 
      metricType = 258, 
      metricValue = "3" 
     )) 

     self.metricData.append(MetricData(
      agentName = "app02|APP|instance_02", 
      metricName = "JSP|add_client:Stall Count", 
      metricType = 385, 
      metricValue = "0" 
     )) 

     self.metricData.append(MetricData(
      agentName = "web05|WEB|instance_02", 
      metricName = "WebSpherePMI|beanModule|bizlogic#bizlogic.jar|ejb.entity|WorkStepInstanceEBBBean:ReadyCount", 
      metricType = 258, 
      metricValue = "0" 
     )) 

     self.timesliceEndTime = "2015-01-05 16:33:15" 
     self.timesliceStartTime = "2015-01-05 16:28:15" 
+0

@MightPork, извините, но не следует этому. Все данные могут быть назначены переменной, называемой данными, и мне нужно проанализировать данные, чтобы получить желаемый результат. – user1471980

+0

вот что вы передаете в предоставленную мной функцию. Классы - это то, что я использовал, чтобы проверить, работает ли это. У меня нет фактических данных, которые вы хотите проанализировать, поэтому я не мог проверить, работает ли это с ними. Это мое лучшее предположение. – MightyPork

+0

Если я сделаю это dumpDataBlob (data), будет ли работать, учитывая данные как созданные в оригинальной почте. Я новичок в этом, пожалуйста, медведь со мной. – user1471980

Смежные вопросы