quinta-feira, 20 de dezembro de 2012

Como fazer o parse de um JSON em python

Como fazer o parse de um json para alimentar conteúdo ?

Na sua view que será responsável por buscar o conteúdo faça como abaixo:

def carga(request):
 import json
 from django.conf import settings

 json_data=open("%s/arquivo.json" % settings.MEDIA_ROOT).read()
 data = json.loads(json_data)

 retorno = ""

 for i in data['raiz']:
  retorno += "<h2>%s</h2>" % (i['titulo'],)

  for v in i['itens']:
   retorno += '--> %s: %s ' % (v['titulo'], v['valor'])
  retorno += '<hr>'

 return HttpResponse(retorno)

O exemplo acima retorna o conteúdo da seguinte forma:


Titulo1

--> Item titulo1: item valor1
--> Item titulo2: item valor2
--> Item titulo3: item valor3

Titulo2

--> Item titulo1: item valor1
--> Item titulo2: item valor2
--> Item titulo3: item valor3

Titulo3

--> Item titulo1: item valor1
--> Item titulo2: item valor2



hasta!

Como utilizar RSS de um site externo como fonte de conteúdo

Deseja colocar eu seu site o conteúdo de um RSS de um site externo?
Tarefa simples para o FeedParser (http://pypi.python.org/pypi/feedparser/)

Para tal, instale o FeedParser no seu ENV:
pip install feedparser

Na sua view que será responsável por buscar o conteúdo no site externo faça como abaixo:

def sua_view(request):
    import feedparser
    d = feedparser.parse('http://www.seu_site_externo.com.br/rss/')
    noticias = d['entries']
    VARS = {
        'noticias':noticias,
    }
    return render_to_response('noticias.html', VARS, context_instance=RequestContext(request))

E para acessar os conteúdos no template, utilize os dados conforme desejado, segue a lista dos atributos que o RSS retorna:
  • comments 
  • description
  • guidislink 
  • id
  • link 
  • links 
  • published 
  • published_parsed 
  • summary 
  • summary_detail 
  • tags 
  • title 
  • title_detail

hasta!