【问题标题】:Parse curly brackets into a json? [closed]将大括号解析为json? [关闭]
【发布时间】:2020-12-28 10:44:18
【问题描述】:

我想用python解析这个json:

[
    {
        "casa": {
            "compra": "74,050",
            "venta": "79,050",
            "agencia": "349",
            "nombre": "Dolar Oficial",
            "variacion": "0,030",
            "ventaCero": "TRUE",
            "decimales": "3"
        }
    },
    {
        "casa": {
            "compra": "127,000",
            "venta": "131,000",
            "agencia": "310",
            "nombre": "Dolar Blue",
            "variacion": "0",
            "ventaCero": "TRUE",
            "decimales": "3"
        }
    },
    {
        "casa": {
            "compra": "No Cotiza",
            "venta": "0",
            "agencia": "311",
            "nombre": "Dolar Soja",
            "variacion": "0",
            "ventaCero": "TRUE",
            "decimales": "3"
        }
    },
    {
        "casa": {
            "compra": "119,550",
            "venta": "120,190",
            "agencia": "312",
            "nombre": "Dolar Contado con Liqui",
            "variacion": "0,730",
            "ventaCero": "TRUE",
            "decimales": "3"
        }
    },
    {
        "casa": {
            "compra": "121,760",
            "venta": "118,280",
            "agencia": "313",
            "nombre": "Dolar Bolsa",
            "variacion": "4,560",
            "ventaCero": "TRUE",
            "decimales": "3"
        }
    },
    {
        "casa": {
            "compra": "9.852,070",
            "venta": "10.251,516",
            "agencia": "399",
            "nombre": "Bitcoin",
            "variacion": "-0,24",
            "ventaCero": "TRUE",
            "decimales": "3"
        }
    },
    {
        "casa": {
            "nombre": "Dolar turista",
            "compra": "No Cotiza",
            "venta": "102,77",
            "agencia": "406",
            "variacion": "0,03"
        }
    },
    {
        "casa": {
            "compra": "72,56",
            "venta": "77,50",
            "agencia": "302",
            "nombre": "Dolar",
            "decimales": "3"
        }
    },
    {
        "casa": {
            "nombre": "Argentina",
            "compra": "2.149,00",
            "venta": "-0,05",
            "mejor_compra": "True",
            "mejor_venta": "False",
            "fecha": "05\\/05\\/15",
            "recorrido": "16:30",
            "afluencia": {},
            "agencia": "141",
            "observaciones": {}
        }
    }
]

这个 json 在大括号内也有大括号。例如,如何访问第一个 "casa" 内部和第一个 "casa" 内部,访问 "compra" 并返回其值?

我这样做了:

dolarsi = requests.get('https://www.dolarsi.com/api/api.php?type=valoresprincipales').text
dolarvalue = json.loads(dolarsi)
for value in dolarvalue[0]:
    print(value)

【问题讨论】:

  • 请编辑您的问题并将 JSON 粘贴到那里。该链接将来可能会失效。
  • requests 对 JSON 数据有特殊的方法 dolarvalue = requests.get(...).json()

标签: python json api parsing


【解决方案1】:

dolarvalue 中,您有一个字典列表,其键是冗余信息,因为它们是相等的 (casa),其值也是字典,因此由于此 JSON 的结构方式,您有一个嵌套字典列表,这可能很棘手。

尝试运行它以使其可视化:

import requests
import json

dolarsi = requests.get('https://www.dolarsi.com/api/api.php?type=valoresprincipales').text
dolarvalue = json.loads(dolarsi)
print("\n-----------------\n")
print(dolarvalue)
print("\n-----------------\n")
for i in dolarvalue:
    for (key, value) in i.items():
        for (key2, value2) in value.items():
            print(f"{key} : {key2} : {value2}")
        print("\n")

我无法为您提供具体的解决方案,因为您没有指定您想要的内容,但我希望这种迭代此结构的方式对您有所帮助。 尝试更准确,并在未来的问题中详细说明您要达到的目标。

如果此答案对您有帮助,请将此问题标记为已解决

【讨论】:

  • 谢谢,但我仍然无法解决。我想要的是访问一个特定的值。例如,casa > nombre > "Dolar Oficial"(仅那个值)。例如,如果我访问这个值,我可以从它的字典中访问其他估值器。
  • @Sebastian 在这种情况下,“nombre”将在key2 和“Dolar Oficial”在value2,只需添加您需要的逻辑
  • 感谢@Polo 它有效!就像您向我展示的那样,我可以使用更多代码访问我的信息: if 'Dolar Oficial' in value.values()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-22
  • 1970-01-01
  • 1970-01-01
  • 2017-11-06
  • 2018-10-11
  • 2019-07-10
相关资源
最近更新 更多