0
我试图使用python将以下数据转换为JSON
,例如import json
。我原本以为我收到JSON数据,直到我回应并找到下面的内容。蟒蛇 - 试图将乱码字符串转换为JSON
不幸的是,我从SOAP服务收到下面的数据,所以无法控制我如何接收它。
无论如何,它看起来像下面有任何可以解析的结构吗?或者我将不得不逐行通过它并手动转换它?它看起来不像我以前见过的任何东西,即使某些变量名称看起来像是XML,或者最初是XML。
我只对stopData[]
数组的值感兴趣,如果这简化了一些事情!
为了记录在案,我试着用JSON解析器解析它,如下所示,但它不承认它:
data = json.loads(rawData)
data['StopData']
I also tried:
data = json.loads(rawData)
但既不工作。 下面是我与之合作的数据:
tmpData = requestoutput[1][0][0][0]
这向我表明数据实际存储在多:
('schema', [(schema){
_id = "NewDataSet"
element[] =
(element){
_UseCurrentLocale = "true"
_IsDataSet = "true"
_MainDataTable = "StopData"
_name = "NewDataSet"
complexType[] =
(complexType){
choice[] =
(choice){
_maxOccurs = "unbounded"
_minOccurs = "0"
element[] =
(element){
_name = "StopData"
complexType[] =
(complexType){
sequence[] =
(sequence){
element[] =
(element){
_type = "xs:dateTime"
_name = "ServiceDelivery_ResponseTimestamp"
_minOccurs = "0"
},
(element){
_type = "xs:string"
_name = "ServiceDelivery_ProducerRef"
_minOccurs = "0"
},
(element){
_type = "xs:boolean"
_name = "ServiceDelivery_Status"
_minOccurs = "0"
},
(element){
_type = "xs:boolean"
_name = "ServiceDelivery_MoreData"
_minOccurs = "0"
},
(element){
_type = "xs:string"
_name = "StopMonitoringDelivery_Version"
_minOccurs = "0"
},
(element){
_type = "xs:dateTime"
_name = "StopMonitoringDelivery_ResponseTimestamp"
_minOccurs = "0"
},
(element){
_type = "xs:string"
_name = "StopMonitoringDelivery_RequestMessageRef"
_minOccurs = "0"
},
(element){
_type = "xs:dateTime"
_name = "MonitoredStopVisit_RecordedAtTime"
_minOccurs = "0"
},
(element){
_type = "xs:string"
_name = "MonitoredStopVisit_MonitoringRef"
_minOccurs = "0"
},
(element){
_type = "xs:string"
_name = "MonitoredVehicleJourney_LineRef"
_minOccurs = "0"
},
(element){
_type = "xs:string"
_name = "MonitoredVehicleJourney_DirectionRef"
_minOccurs = "0"
},
(element){
_type = "xs:string"
_name = "FramedVehicleJourneyRef_DataFrameRef"
_minOccurs = "0"
},
(element){
_type = "xs:string"
_name = "FramedVehicleJourneyRef_DatedVehicleJourneyRef"
_minOccurs = "0"
},
(element){
_type = "xs:string"
_name = "MonitoredVehicleJourney_PublishedLineName"
_minOccurs = "0"
},
(element){
_type = "xs:string"
_name = "MonitoredVehicleJourney_OperatorRef"
_minOccurs = "0"
},
(element){
_type = "xs:string"
_name = "MonitoredVehicleJourney_DestinationRef"
_minOccurs = "0"
},
(element){
_type = "xs:string"
_name = "MonitoredVehicleJourney_DestinationName"
_minOccurs = "0"
},
(element){
_type = "xs:boolean"
_name = "MonitoredVehicleJourney_Monitored"
_minOccurs = "0"
},
(element){
_type = "xs:boolean"
_name = "MonitoredVehicleJourney_InCongestion"
_minOccurs = "0"
},
(element){
_type = "xs:string"
_name = "MonitoredVehicleJourney_BlockRef"
_minOccurs = "0"
},
(element){
_type = "xs:string"
_name = "MonitoredVehicleJourney_VehicleRef"
_minOccurs = "0"
},
(element){
_type = "xs:string"
_name = "MonitoredCall_VisitNumber"
_minOccurs = "0"
},
(element){
_type = "xs:boolean"
_name = "MonitoredCall_VehicleAtStop"
_minOccurs = "0"
},
(element){
_type = "xs:dateTime"
_name = "MonitoredCall_AimedArrivalTime"
_minOccurs = "0"
},
(element){
_type = "xs:dateTime"
_name = "MonitoredCall_ExpectedArrivalTime"
_minOccurs = "0"
},
(element){
_type = "xs:dateTime"
_name = "MonitoredCall_AimedDepartureTime"
_minOccurs = "0"
},
(element){
_type = "xs:dateTime"
_name = "MonitoredCall_ExpectedDepartureTime"
_minOccurs = "0"
},
(element){
_type = "xs:dateTime"
_name = "Timestamp"
_minOccurs = "0"
},
},
},
},
},
},
},
}])('diffgram', [(diffgram){
DocumentElement[] =
(DocumentElement){
StopData[] =
(StopData){
_id = "StopData1"
_rowOrder = "0"
ServiceDelivery_ResponseTimestamp[] =
"2013-01-21T20:57:40.33+00:00",
ServiceDelivery_ProducerRef[] =
"bac",
ServiceDelivery_Status[] =
"true",
ServiceDelivery_MoreData[] =
"false",
StopMonitoringDelivery_Version[] =
"1.0",
StopMonitoringDelivery_ResponseTimestamp[] =
"2013-01-21T20:57:40.333+00:00",
StopMonitoringDelivery_RequestMessageRef[] =
"0",
MonitoredStopVisit_RecordedAtTime[] =
"2013-01-21T20:57:40.333+00:00",
MonitoredStopVisit_MonitoringRef[] =
"02371",
MonitoredVehicleJourney_LineRef[] =
"27",
MonitoredVehicleJourney_DirectionRef[] =
"Inbound",
FramedVehicleJourneyRef_DataFrameRef[] =
"2013-01-21",
FramedVehicleJourneyRef_DatedVehicleJourneyRef[] =
"4215",
MonitoredVehicleJourney_PublishedLineName[] =
"77A",
MonitoredVehicleJourney_OperatorRef[] =
"bac",
MonitoredVehicleJourney_DestinationRef[] =
"00354",
MonitoredVehicleJourney_DestinationName[] =
"Ringsend Rd via Tymon Park",
MonitoredVehicleJourney_Monitored[] =
"true",
MonitoredVehicleJourney_InCongestion[] =
"false",
MonitoredVehicleJourney_BlockRef[] =
"027023A:34",
MonitoredVehicleJourney_VehicleRef[] =
"33521",
MonitoredCall_VisitNumber[] =
"39",
MonitoredCall_VehicleAtStop[] =
"false",
MonitoredCall_AimedArrivalTime[] =
"2013-01-21T21:21:00+00:00",
MonitoredCall_ExpectedArrivalTime[] =
"2013-01-21T21:20:12+00:00",
MonitoredCall_AimedDepartureTime[] =
"2013-01-21T21:21:00+00:00",
MonitoredCall_ExpectedDepartureTime[] =
"2013-01-21T21:20:12+00:00",
Timestamp[] =
"2013-01-21T20:57:40.627+00:00",
},
(StopData){
_id = "StopData2"
_rowOrder = "1"
ServiceDelivery_ResponseTimestamp[] =
"2013-01-21T20:57:40.33+00:00",
ServiceDelivery_ProducerRef[] =
"bac",
ServiceDelivery_Status[] =
"true",
ServiceDelivery_MoreData[] =
"false",
StopMonitoringDelivery_Version[] =
"1.0",
StopMonitoringDelivery_ResponseTimestamp[] =
"2013-01-21T20:57:40.333+00:00",
StopMonitoringDelivery_RequestMessageRef[] =
"0",
MonitoredStopVisit_RecordedAtTime[] =
"2013-01-21T20:57:40.333+00:00",
MonitoredStopVisit_MonitoringRef[] =
"02371",
MonitoredVehicleJourney_LineRef[] =
"27",
MonitoredVehicleJourney_DirectionRef[] =
"Inbound",
FramedVehicleJourneyRef_DataFrameRef[] =
"2013-01-21",
FramedVehicleJourneyRef_DatedVehicleJourneyRef[] =
"4061",
MonitoredVehicleJourney_PublishedLineName[] =
"77A",
MonitoredVehicleJourney_OperatorRef[] =
"bac",
MonitoredVehicleJourney_DestinationRef[] =
"00354",
MonitoredVehicleJourney_DestinationName[] =
"Ringsend Rd via Tymon Park",
MonitoredVehicleJourney_Monitored[] =
"true",
MonitoredVehicleJourney_InCongestion[] =
"false",
MonitoredVehicleJourney_BlockRef[] =
"027008:34",
MonitoredVehicleJourney_VehicleRef[] =
"33204",
MonitoredCall_VisitNumber[] =
"39",
MonitoredCall_VehicleAtStop[] =
"false",
MonitoredCall_AimedArrivalTime[] =
"2013-01-21T21:44:00+00:00",
MonitoredCall_ExpectedArrivalTime[] =
"2013-01-21T21:44:00+00:00",
MonitoredCall_AimedDepartureTime[] =
"2013-01-21T21:44:00+00:00",
MonitoredCall_ExpectedDepartureTime[] =
"2013-01-21T21:44:00+00:00",
Timestamp[] =
"2013-01-21T20:57:40.627+00:00",
},
},
}])
你说得对,这显然不是JSON,所以这次不相关......但总的来说,说“它不承认它”或“没有工作”都不是很有帮助;改为发布异常和追踪。 – abarnert
SOAP服务应该在标题中提供您的内容类型。你能打印出来并告诉我们它说了什么吗?另外,你通常会通过一个参数来控制你得到的东西,这个参数说明了你想要什么类型(例如,有多少服务可以让你选择XML与JSON还是可显示的HTML)。此外,SOAP服务可能有一些文档(如果它是公开的)或某人可以询问它(如果它是内部的),所以即使它不是标准符号,也可以获得语言定义而不是猜测它,这将使解析器更容易编写。 – abarnert
你试过json.loads(); ?阅读这个https://jsonweb.readthedocs.org/en/latest/decode.html –