Python: 加载 JSON 对象时出错

Python: error loading JSON object

我正在尝试在 python 中加载以下 JSON 字符串:

{
"Motivo_da_Venda_Perdida":"",
"Data_Visita":"2015-03-17 08:09:55",
"Cliente":{
"Distribuidor1_Modelo":"",
"RG":"",
"Distribuidor1_Marca":"Selecione",
"PlataformaMilho1_Quantidade":"",
"Telefone_Fazenda":"",
"Pulverizador1_Quantidade":"",
"Endereco_Fazenda":"",
"Nome_Fazenda":"",
"Area_Total_Fazenda":"",
"PlataformaMilho1_Marca":"Selecione",
"Trator1_Modelo":"",
"Tipo_Cultura3":"Selecione",
"Tipo_Cultura4":"Selecione",
"Cultura2_Hectares":"",
"Colheitadeira1_Quantidade":"",
"Tipo_Cultura1":"Soja",
"Tipo_Cultura2":"Selecione",
"Plantadeira1_Marca":"Stara",
"Autopropelido1_Modelo":"",
"Email_Fazenda":"",
"Autopropelido1_Marca":"Stara",
"Distribuidor1_Quantidade":"",
"PlataformaMilho1_Modelo":"",
"Trator1_Marca":"Jonh deere",
"Email":"",
"CPF":"46621644000",
"Endereco_Rua":"PAQUINHAS, S/N",
"Caixa_Postal_Fazenda":"",
"Cidade_Fazenda":"",
"Plantadeira1_Quantidade":"",
"Colheitadeira1_Marca":"New holland",
"Data_Nascimento":"2015-02-20",
"Cultura4_Hectares":"",
"Nome_Cliente":"MILTON CASTIONE",
"Cep_Fazenda":"",
"Telefone":"5491290687",
"Cultura3_Hectares":"",
"Trator1_Quantidade":"",
"Cultura1_Hectares":"",
"Autopropelido1_Quantidade":"",
"Pulverizador1_Modelo":"",
"Caixa_Postal":"",
"Estado":"RS",
"Endereco_Numero":"",
"Cidade":"COLORADO",
"Colheitadeira1_Modelo":"",
"Pulverizador1_Marca":"Selecione",
"CEP":"99460000",
"Inscricao_Estadual":"0",
"Plantadeira1_Modelo":"",
"Estado_Fazenda":"RS",
"Bairro":""
},
"Quilometragem":"00",
"Modelo_Pretendido":"Selecione",
"Quantidade_Prevista_Aquisicao":"",
"Id_Revenda":"1",
"Contato":"05491290687",
"Pendencia_Para_Proxima_Visita":"",
"Data_Proxima_Visita":"2015-04-17 08:09:55",
"Valor_de_Venda":"",
"Maquina_Usada":"0",
"Id_Vendedor":"2",
"Propensao_Compra":"Propensao_Compra_Frio",
"Comentarios":"despertar compra",
"Sistema_Compra":"Sistema_Compra_Finame",
"Outro_Produto":"",
"Data_Prevista_Aquisicao":"2015-04-17 08:09:55",
"Objetivo_Visita":"Despertar_Interesse",
"Tipo_Contato":"Telefonico"}

但是当我尝试加载它时出现以下错误

File "python_file.py", line 107, in busca_proxima_mensagem
  Visita = json.loads(corpo)
File "/usr/lib/python2.7/json/__init__.py", line 338, in loads
  return _default_decoder.decode(s)
File "/usr/lib/python2.7/json/decoder.py", line 369, in decode
  raise ValueError(errmsg("Extra data", s, end, len(s)))
ValueError: Extra data: line 1 column 2 - line 6 column 84 (char 1 - 1020)

但是这个 JSON 根据这个站点似乎是有效的:http://jsonformatter.curiousconcept.com/ 我做错了什么?为什么我不能将此字符串作为 JSON 对象加载?

我正在尝试像这样从 AWS SQS 加载字符串:

import json
...
result = fila.get_messages(1, 30, 'SentTimestamp')
for message in result:
    corpo = message.get_body()
    Visita = json.loads(corpo)

好的,所以我弄清楚是什么导致了我的问题:有一个斜杠作为键的值

"Endereco_Rua":"PAQUINHAS, S/N",

但是我告诉 python 过滤掉它(下面的代码),但它不起作用。我怎样才能删除它?可以在创建数据的源上进行,因为我无权访问用户用于填写的界面。

result = fila.get_messages(1, 30, 'SentTimestamp')
for message in result:
    corpo = message.get_body()
    corpo = corpo.replace("/", "") #Filtering slashes
    Visita = json.loads(corpo)

找到解决办法了!除了斜线字符之外,有时也会在没有明显原因的情况下发生此错误。通过在我的 python 代码中添加以下行来解决这个问题:

1) 在我的代码开头,以及其他 python 导入

from boto.sqs.message import RawMessage

2) 将我的 SQS 队列更改为 use/fetch 原始数据:

fila = sqs_conn.get_queue(constantes.fila_SQS)
fila.set_message_class(RawMessage)

希望这对遇到同样问题的人有所帮助。