【问题标题】:Parse Bloomberg API response to JSON in python3在 python3 中解析 Bloomberg API 对 JSON 的响应
【发布时间】:2019-05-16 10:22:15
【问题描述】:

如何将在(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
            }
        }
    }
}

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

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)

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

【问题讨论】:

  • Bloomberg 消息未使用 json 格式。所以你需要解析消息(可以在网上或文档中找到多个示例)并从数据中创建一个 JSON 对象。
  • 很抱歉,我不熟悉python(我使用Java API)。根据错误消息,我怀疑问题是f_name = field.name(),它返回一个Name 对象而不是字符串。在 Java 中,您会使用 field.name().toString() 来获取底层字符串 - 我想 Python 中也有类似的函数。

标签: json python-3.x bloomberg


【解决方案1】:

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

这是链接 ==> api schema

使用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)

【讨论】:

  • 对于链引用使用chainrefs = [w for v in field.values() for e in v.elements() for w in e.values()]
猜你喜欢
  • 2015-02-23
  • 1970-01-01
  • 1970-01-01
  • 2017-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多