Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 拆分Json数据时获取TypeError?_Python_Arrays_Json - Fatal编程技术网

Python 拆分Json数据时获取TypeError?

Python 拆分Json数据时获取TypeError?,python,arrays,json,Python,Arrays,Json,我有一个json数据,如下所示: json_data = '{"data":"[{"Date":"3/17/2017","Steam Total":60},{"Date":"3/18/2017","Steam Total":15},{"Date":"3/19/2017","Steam Total&q

我有一个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确实错了

您可以尝试使用这个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\u-input\u-data=json\u-data[“data”]
    ,变量
    json\u-data
    不是json对象,而是字符串对象,您可以尝试通过字符串键获取字符串位置,以便从字符串json获取json对象使用
    json
    api:

  • 您的Json字符串无效,这是一个有效版本:
    {“数据”:[{“日期”:“2017年3月17日”,“蒸汽总量”:60},{“日期”:“2017年3月18日”,“蒸汽总量”:15},{“日期”:“2017年3月19日”,“蒸汽总量”:1578},{“日期”:“2017年3月20日”,“蒸汽总量”:1604}],“数据详情”:{“数据键”:“蒸汽总量”,“给定高”:“1500”,“给定低”:“1000”,“运行信息”[/code>

  • 现在,您的代码运行良好


  • 尝试将json\u数据解析为json格式(使用
    json.parse(json\u数据)
    )。目前它的类型是string——这正是您的错误所说的。

    正如前面指出的,您的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”

    您声明一个名为
    json_data
    的字符串,然后它的行为就像一个字符串。这就是异常告诉你的。就像这里的其他人试图说的那样,您的数据中也存在错误,但是您提供的异常是由于访问字符串时将其视为字典。您需要添加一个缺少的调用,例如,
    json.loads(…)

    json_data='{“data”:“[…..在最后一个引号中有一个错误,您想声明一个数组,但不是因为QuoteEyes json数据格式错误而声明了一个字符串,而是:json_data={“data”:[{“Date”:”2017年3月17日,“蒸汽总量”:60},{“日期”:“2017年3月18日”,“蒸汽总量”:15},{“日期”:“2017年3月19日”,“蒸汽总量”:1578},{“日期”:“2017年3月20日”,“蒸汽总量”:1604},{“数据键”:“蒸汽总量”,“给定高”:“1500”,“给定低”:“1000”,“运行信息”:[]}尝试使用任何json解析器检查json数据如果您从转储文件获取此数据,请在将数据转储到文件之前尝试对数据进行strigifig。例如:如果您使用python转储到文件,请使用json.dumps(您的_数据),然后使用json.loads(文件内容)将其读回