2010-12-02 6 views
0

J'ai ce code:Comment encapsuler JSON entre parenthèses?

objects = Event.objects.all() 
i = 0 
dict = {} 
small_dict = {} 
for o in objects: 
    small_dict = {'id': o.id, 'url': o.url, 'name': o.name, 'image': o.image} 
    dict[str(i+1)] = small_dict 
    small_dict = {} 

return HttpResponse(
    simplejson.dumps(dict), 
    content_type = 'application/javascript; charset=utf8' 
) 

et il me donne ceci:

{"1": {"url": "http://www.rte.ie/tv/crimecall/", "image": "http://img.rasset.ie/0002c8d0-250.jpg", "id": 2, "name": "Crimecall"}} 

Comment puis-je plus encapsuler entre parenthèses ()? Parce que sans eux, je reçois une erreur lors de l'analyse en PHP.

+2

'" ("+ simplejson.dumps (dict) +") ""? Ou quel est exactement votre objectif? –

+1

Ce que vous obtenez est une sortie JSON valide. Peut-être que vous devriez corriger le code PHP. –

+0

Je reçois une erreur 'label invalide' et de ce que j'ai pu trouver, l'ajout de parenthèses résout le problème – decarbo

Répondre

0

Vous pouvez le faire de cette façon, mais ce n'est pas visible dans le navigateur maintenant. Si ce n'est pas un problème, voici le code:

callback = request.GET.get('callback', '') 
objects = Event.objects.all() 
i = 0 
dict = {} 
small_dict = {} 
for o in objects: 
    small_dict = {'id': o.id, 'url': o.url, 'name': o.name, 'image': o.image} 
    dict[str(i+1)] = small_dict 
    small_dict = {} 

response = simplejson.dumps(dict) 
response = callback + '(' + response + ')'; 

return HttpResponse(response, 
    mimetype ='application/json; charset=utf8') 
+0

brillant cela fonctionne! Et j'ai déjà téléchargé un peu de django-repos-api :) – decarbo

2
  1. Le type MIME de JSON est "application/json".
  2. Si vous avez des problèmes d'analyse dans PHP, alors c'est un problème PHP. N'ajoutez pas de parenthèses côté serveur, mais ajoutez-les avant d'analyser la chaîne en PHP. Je suppose que vous savez comment concaténer en PHP, non? De toute façon, je ne comprends pas quel est votre problème - n'utilisez-vous pas json_decode?
Questions connexes