Quantcast

Problemas ao ler arquivo json

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Problemas ao ler arquivo json

daniel gatis danielgatis@gmail.com [python-brasil]
Boa tarde.

Estou precisando ler um arquivo JSON e depois passar ele para uma função
angularjs. Para fazer a leitura está tudo tranquilo, estou usando o código
abaixo:

file_salgados = open("{0}/salgados.json".format(path))
salgados_json = json.load(file_salgados)

O problema é que o retorno dessa função me traz uma estrutura assim:

[{u'prato': u'arroz-de-cuxa-com-creme-de-pequi', u'foto':
u'img/salgado/arroz-de-cuxa-com-creme-de-pequi.jpg', u'chefe': u'Andreia
Teixeira de Freitas Rocha', u'descricao': u'\xc9 um prato com os
ingredientes mais t\xedpicos do estado do Maranh\xe3o e do Tocantins. O
cux\xe1 e o pequi al\xe9m da carne seca s\xe3o muito apreciados nesses
estados. T\xe3o ricos nessa culin\xe1ria', u'titulo': u'Arroz de Cux\xe1
com Creme de Pequi'}, {u'prato': u'tortelline-do-serrado' ....]

Ou seja tudo é unicode, e quando tento passar isso para o AngularJS ele
acusa o erro. Minha dúvida portanto é existe alguma forma de "parsear" um
arquivo JSON e retornar apenas string mesmo?

Atenciosamente,

Guilherme de Carvalho Carneiro
Analista de sistemas
twitter: @GCarneiro
http://djangopeople.net/guilhermecarvalho/
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Problemas ao ler arquivo json

daniel gatis danielgatis@gmail.com [python-brasil]
Peraí, Guilherme... deixa eu ver se entendi direito...

Vc. quer ler o conteúdo do arquivo como string e passar para o angular
como string?

Se for isto, quem vai "parsear" o Json é o próprio angular... tudo o que
vc. precisa fazer é ler o conteúdo do arquivo.

seria algo mais ou menos assim:

file_salgados = open("{0}/salgados.json".format(path), 'r')
salgados_json = file_salgados.read()
file_salgados.close()

Nesta situação, a sua variável salgados_json contém o "string" json que
está dentro do arquivo.

Note que, com esta abordagem, seu script não está validando o json (não
esta tentando fazer o parse do dito cujo).

Vc. pode até validar fazendo o seguinte:

try:
     conteudo_validado = json.loads(salgados_json)
     # aqui você faz a chamada para o AngularJS, pois só chega neste
ponto se o json for válido
except ValueError,v:
     # tratamento do erro, como, por exemplo
     print ("Json Inválido:", v.message)

Com isto, vc. não vai passar JSON inválido para o AngularJS

Alexandre


Em 18-08-2015 17:13, Guilherme Carvalho [hidden email]
[python-brasil] escreveu:

> Boa tarde.
>
> Estou precisando ler um arquivo JSON e depois passar ele para uma
> função angularjs. Para fazer a leitura está tudo tranquilo, estou
> usando o código abaixo:
>
> file_salgados = open("{0}/salgados.json".format(path))
> salgados_json = json.load(file_salgados)
>
> O problema é que o retorno dessa função me traz uma estrutura assim:
>
> [{u'prato': u'arroz-de-cuxa-com-creme-de-pequi', u'foto':
> u'img/salgado/arroz-de-cuxa-com-creme-de-pequi.jpg', u'chefe':
> u'Andreia Teixeira de Freitas Rocha', u'descricao': u'\xc9 um prato
> com os ingredientes mais t\xedpicos do estado do Maranh\xe3o e do
> Tocantins. O cux\xe1 e o pequi al\xe9m da carne seca s\xe3o muito
> apreciados nesses estados. T\xe3o ricos nessa culin\xe1ria',
> u'titulo': u'Arroz de Cux\xe1 com Creme de Pequi'}, {u'prato':
> u'tortelline-do-serrado' ....]
>
> Ou seja tudo é unicode, e quando tento passar isso para o AngularJS
> ele acusa o erro. Minha dúvida portanto é existe alguma forma de
> "parsear" um arquivo JSON e retornar apenas string mesmo?
>
> Atenciosamente,
>
> Guilherme de Carvalho Carneiro
> Analista de sistemas
> twitter: @GCarneiro
> http://djangopeople.net/guilhermecarvalho/
>

Loading...