处理JSON格式的文件-系列Error


title: 内置数据结构-文件处理
subtitle: 处理JSON格式的文件
date: 2018-12-14 10:17:28
---

JSON的Error汇总

本文档主要记录了处理JSON文件一系列Error等。

1. json.decoder.JSONDecodeError: Expecting value: line 27290 column 3 (char 1035661)

  • 类型错误:JSON解码错误
  • 排错思路:1. 最大的可能就是原来的大JSON文件格式出现错误,比如原JSON正确的格式为: {"a":"1","b":{"c":"1","d":{} }}, 你的JSON格式为: {"a":"1","b":{"c":"1","d": }}, 缺少"d":对应的value:{}
  • 解决方法:修改,保证大JSON格式正确。

2. KeyError: 'databaseEdition'

  • 类型错误:数据请求错误。
  • 排错思路:这是我处理JSON文件时候遇到的一个错误,特别少见,没有get字段。

    for attr in rdsattributes:
      rdsondemand_output[sku][attr] = data['products'][sku]["attributes"][attr]
  • 解决方法:

    for attr in rdsattributes:
      rdsondemand_output[sku][attr] = data['products'][sku]["attributes"].get(attr)

3. AttributeError: 'dict' object has no attribute 'value'

  • 类型错误:属性错误,dict对象没有对应的属性
  • 排错思路:属性/方法用错

    rdsondemand_output[sku]['unit'] = \
          list(list(data['terms']['OnDemand'][sku].value)[0]["priceDimensions"].value)[0]["unit"]
  • 解决方法:注意,下面的方法仍然用错

    rdsondemand_output[sku]['unit'] = \
          list(list(data['terms']['OnDemand'][sku].values)[0]["priceDimensions"].values)[0]["unit"]

4. TypeError: 'builtin_function_or_method' object is not iterable

  • 类型错误:类型错误,输入错误的对象导致没有办法迭代
  • 排错思路:values()属性, ()里面代表的是一坨大value。

    rdsondemand_output[sku]['unit'] = \
          list(list(data['terms']['OnDemand'][sku].values)[0]["priceDimensions"].values)[0]["unit"]
  • 解决方法:

    rdsondemand_output[sku]['unit'] = \
          list(list(data['terms']['OnDemand'][sku].values())[0]["priceDimensions"].values())[0]["unit"]

5. TypeError: string indices must be integers

  • 类型错误:类型错误,字符串索引必须是整数
  • 排错思路:

    for sku in rdssku_l:
        rdsondemand_output[sku] = {}
    
        for attr in rdsattributes:
            rdsondemand_output[sku][attr] = data['products'][sku]['attributes'].get(attr)
    
        rdsondemand_output[sku]['unit'] = \
            list(list(data['terms']['OnDemand'][sku].values())[0]['priceDimensions'].values())[0]['unit']
        rdsondemand_output[sku]['CNY'] = \
            list(list(list(data['terms']['OnDemand'][sku].values())[0]['priceDimensions'].values())[0]['pricePerUnit'].values())[0]['CNY']
  • 解决方法:

    for sku in rdssku_l:
        rdsondemand_output[sku] = {}
    
        for attr in rdsattributes:
            rdsondemand_output[sku][attr] = data['products'][sku]['attributes'].get(attr)
    
        rdsondemand_output[sku]['unit'] = \
            list(list(data['terms']['OnDemand'][sku].values())[0]['priceDimensions'].values())[0]['unit']
        rdsondemand_output[sku]['CNY'] = \
            list(list(data['terms']['OnDemand'][sku].values())[0]['priceDimensions'].values())[0]['pricePerUnit']['CNY']
上一篇:总体数据


下一篇:Linux下批量修改文件名