【问题标题】:Python - String to JSON. Error: AttributeError: 'str' object has no attribute 'get'Python - 字符串到 JSON。错误:AttributeError:“str”对象没有属性“get”
【发布时间】:2019-05-12 10:52:05
【问题描述】:

我对 python 很陌生。

我正在形成一个 json 字符串,从各种 REST 调用中获取输入。

类似:

{
   "-gammaid#10191-":{
      "domain":"Kids Interest",
      "product":"Project1"
   },
   "-gammaid#10382-":{
      "domain":"Weekend Classes",
      "product":"Project2"
   },
   "-gammaid#10442-":{
      "domain":"Knowledge Driven",
      "product":"Project3"
   },
   "-gammaid#10620-":{
      "domain":"Primary Education",
      "product":"Project4"
   },
   "-gammaid#10986-":{
      "domain":"Other Domain",
      "product":"Project5"
   },
   "-gammaid#10987-":{
      "domain":"Kids Interest",
      "product":"Project6"
   },
   "-gammaid#10996-":{
      "domain":"External Classes",
      "product":"Project7"
   },
   "-gammaid#11663-":{
      "domain":"Parent Interaction",
      "product":"Project8"
   }
}

如您所见,每个键 gammaid 依次具有 json 结构化值。

当我运行my_json.get("-gammaid#11663-") 时,我得到了

AttributeError: 'str' object has no attribute 'get'

【问题讨论】:

  • 您的my_json 被识别为字符串,而您可能希望将其解释为字典。这个问题的答案可能就是你要找的:stackoverflow.com/questions/988228/…
  • @reiley type(my_json) 给你什么?
  • @KenHBS,谢谢。伟大的洞察力。

标签: python json


【解决方案1】:

你需要先把它解析成字典:

import json

s = 'YOUR JSON STRING'

d = json.loads(s)
print(d["-gammaid#11663-"])

【讨论】:

    【解决方案2】:

    如果你这样定义:

    s={
       "-gammaid#10191-":{
          "domain":"Kids Interest",
          "product":"Project1"
       },
       "-gammaid#10382-":{
          "domain":"Weekend Classes",
          "product":"Project2"
       }
    

    这是python dict。 所以你可以像这样访问值:

    s["-gammaid#11663-"]
    {'domain': 'Parent Interaction', 'product': 'Project8'}
    

    如果您需要实际获取 json 对象,您可以这样做:

    import json
    json.loads(json.dumps(s))
    

    【讨论】:

      【解决方案3】:

      注意,json lib中有两个函数:json.load**s**()json.load()

      json.loads(fs) >> takes file like object 
      json.load(str) >> takes string 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-05
        • 2020-09-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-01
        • 2021-05-22
        • 1970-01-01
        相关资源
        最近更新 更多