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

Posted gunxiaoshi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了处理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']

以上是关于处理JSON格式的文件-系列Error的主要内容,如果未能解决你的问题,请参考以下文章

FastJson处理数据出现错误 com.alibaba.fastjson.JSONException: syntax error, expect {, actual error, pos 1(示例代

sparksql系列 Json转Map,多文件生成

/error处理

重学springboot系列之JSON处理工具类

Go处理json数据

flask入门到起飞(十三)结合flask-wtf框架异常统一json格式处理