【问题标题】:Getting TypeError while spliting Json data?拆分 Json 数据时出现 TypeError?
【发布时间】:2017-06-02 09:49:43
【问题描述】:

我有一个这样的 json 数据:

json_data = '{"data":"[{"Date":"3/17/2017","Steam Total":60},{"Date":"3/18/2017","Steam Total":15},{"Date":"3/19/2017","Steam Total":1578},{"Date":"3/20/2017","Steam Total":1604}]", "data_details": "{"data_key":"Steam Total", "given_high":"1500", "given_low":"1000", "running_info": []}"}'

json_input_data = json_data["data"]
json_input_additional_info = json_data["data_details"]

我收到一个错误:

TypeError:字符串索引必须是整数,而不是 str

我认为json数据有错误。有人可以帮我吗?

【问题讨论】:

  • json_data = '{"data":"[.... 在最后一个引号中有一个错误,您想声明一个数组,但由于该引号而不是声明了一个字符串
  • 是的JSON数据格式错误,应该是:json_data = {"data":[{"Date":"3/17/2017","Steam Total":60},{"日期":"3/18/2017","Steam Total":15},{"Date":"3/19/2017","Steam Total":1578},{"Date":"3/20/ 2017","Steam Total":1604}], "data_details": {"data_key":"Steam Total", "given_high":"1500", "given_low":"1000", "running_info": []}}尝试任何 json 解析器来检查 json 数据json.parser.online.fr

标签: python arrays json


【解决方案1】:

你的代码有一些问题。

    1234563 @api:json
  1. 您的 Json 字符串无效,这是一个有效版本:
    {"data":[{"Date":"3/17/2017","Steam Total":60},{"Date":"3/18/2017","Steam Total":15},{"Date":"3/19/2017","Steam Total":1578},{"Date":"3/20/2017","Steam Total":1604}], "data_details": {"data_key":"Steam Total", "given_high":"1500", "given_low":"1000", "running_info": []}}

  2. 现在,您的代码可以正常工作了。

【讨论】:

    【解决方案2】:

    尝试将您的 json_data 解析为 JSON 格式(使用 JSON.parse(json_data))。目前它的类型是字符串 - 这正是你的错误所说的。

    【讨论】:

    • 如果您从转储文件中获取此数据,请在将数据转储到文件之前尝试对数据进行分类。例如:如果你使用python转储到文件,使用json.dumps(your_data),然后用json.loads(file_content)读回
    【解决方案3】:

    正如Pongpira Upra 指出的那样,您的 json 格式不正确,应该是这样的。

    {  
       "data":[  
          {  
             "Date":"3/17/2017",
             "Steam Total":60
          },
          {  
             "Date":"3/18/2017",
             "Steam Total":15
          },
          {  
             "Date":"3/19/2017",
             "Steam Total":1578
          },
          {  
             "Date":"3/20/2017",
             "Steam Total":1604
          }
       ],
       "data_details":{  
          "data_key":"Steam Total",
          "given_high":"1500",
          "given_low":"1000",
          "running_info":[]
       }
    }
    

    为了检索你应该写的信息

    json_data[0]["Date"]
    

    这将打印“3/17/2017”

    【讨论】:

      【解决方案4】:

      您声明了一个名为json_data 的字符串,那么它就像一个字符串。这就是异常告诉你的。就像这里的其他人试图说的那样 - 你 do 在你的数据中也有一个错误,但你提供的异常是由于访问字符串就像它是一个字典一样。您需要添加一个丢失的呼叫,例如json.loads(...).

      【讨论】:

        【解决方案5】:

        你是对的。你的 JSON 确实是错误的。

        你可以试试这个json吗?

        {  
           "data":[  
              {  
                 "Date":"3/17/2017",
                 "Steam Total":60
              },
              {  
                 "Date":"3/18/2017",
                 "Steam Total":15
              },
              {  
                 "Date":"3/19/2017",
                 "Steam Total":1578
              },
              {  
                 "Date":"3/20/2017",
                 "Steam Total":1604
              }
           ],
           "data_details":{  
              "data_key":"Steam Total",
              "given_high":"1500",
              "given_low":"1000",
              "running_info":[]
           }
        }
        

        【讨论】:

          猜你喜欢
          • 2015-09-03
          • 2016-05-30
          • 1970-01-01
          • 1970-01-01
          • 2021-12-13
          • 1970-01-01
          • 2014-08-16
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多