在python3中解析彭博API对JSON的响应

4 json bloomberg python-3.x

如何将在(python3和flask)中使用bloomberg API返回的响应消息转换为JSON

here is a response example:

ReferenceDataResponse = {
    securityData[] = {
        securityData = {
            security = "FB EQUITY"
            eidData[] = {
            }
            fieldExceptions[] = {
            }
            sequenceNumber = 0
            fieldData = {
                PX_LAST = 186.270000
                VOLUME = 16746904.000000
            }
        }
        securityData = {
            security = "IBM EQUITY"
            eidData[] = {
            }
            fieldExceptions[] = {
            }
            sequenceNumber = 1
            fieldData = {
                PX_LAST = 134.400000
                VOLUME = 2551009.000000
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

用即将到来的代码处理它:

if str(msg.messageType()) == "ReferenceDataResponse":

    securities = msg.getElement('securityData')
    securities_count = securities.numValues()

    for i in range(securities_count):
        security = securities.getValueAsElement(i)
        ticker = security.getElementAsString('security')
       
        if (security.hasElement('fieldData')):
            fields = security.getElement('fieldData')
            fields_count = fields.numElements()
            for j in range (fields_count):
                
                security_dict = None
                field = fields.getElement(j)
                
                f_name = field.name()
                f_value = field.getValueAsString()
              
                security_dict = {"ticker":ticker ,"f_name":f_name , "f_value":f_value}
                bloom_data.append(security_dict)
Run Code Online (Sandbox Code Playgroud)

给我(名称类型的对象不是 JSON 可序列化的)现在,我无法访问名称对象以到达字段的名称任何帮助将不胜感激

小智 6

经过大量搜索,我发现这个文档对于使用bloomberg api处理响应的模式非常有帮助......

这是链接 ==> api 架构

使用 python3 处理响应的示例:

bloom_data = []
if str(msg.messageType()) == "ReferenceDataResponse":

    securities = msg.getElement('securityData')
    securities_count = securities.numValues()

    for i in range(securities_count):
        security = securities.getValueAsElement(i)
        ticker = security.getElementAsString('security')

        if (security.hasElement('fieldData')):
            fields = security.getElement('fieldData')
            fields_count = fields.numElements()
            for j in range (fields_count):

                security_dict = None
                field = fields.getElement(j)

                f_name = field.name()
                f_value = field.getValueAsString()

                security_dict = {"ticker":ticker ,"f_name":str(f_name) , "f_value":f_value}
                bloom_data.append(security_dict)
Run Code Online (Sandbox Code Playgroud)