2017-06-02 18 views
-1

我有这样一个JSON数据:分裂Json数据时获取TypeError?

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"] 

我得到一个错误:

类型错误:字符串索引必须是整数,而不是str的

我认为这是一个错误的JSON数据。有人可以帮助我吗?

+0

json_data ='{“data”:“[....在最后一个报价中存在错误,您希望声明一个数组,但不是由于该报价声明了一个字符串 – Izuel

+0

是的JSON数据格式是错误的,它应该是: json_data = {“data”:[{“Date”:“2017/3/17”,“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解析器来检查json数据http:/ /json.parser.online.fr/ – Anup

回答

2

在你的代码中有一些问题。

  1. 代码:json_input_data = json_data["data"],变量json_data不是一个JSON对象,是一个String对象,并尝试获得通过串钥匙串位置上,得到的字符串JSON JSON对象使用json API:json

  2. 你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": []}}

  3. 现在,您的代码工作正常。

0

你说得对。你的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":[] 
    } 
} 
1

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

+0

如果您正在从转储文件中获取此数据,请在将数据转储到文件之前尝试对数据进行分隔。 例如:如果您使用python转储文件,请使用json。转储(your_data),然后用json读回.loads(FILE_CONTENT) – anilkumarggk

0

由于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"] 

这将打印“2017年3月17日”

0

您声明了一个名为json_data串并,很好,那么它的作用就像一个字符串。这是异常告诉你的。像其他人试图说 - 你也有你的数据错误,但你提供的例外是由于访问字符串,如果它是一个字典。您需要将缺少的电话添加到json.loads(...)