On 11 Jan 2014, at 18:46, Marco Olimpi <badst...@gmail.com> wrote:

> Hi, 

Ciao.
Non so perché tu abbia postato in Inglese (forse mero copia incolla da un post 
in altra lista), ma leggendo l'inglese deduco che possa risponderti 
tranquillamente in Italiano :P

> class User():
>   def __init__(self, _name, _lastname):
>        self.Name = _name
>        self.LastName = _lastname
> 
> class News():
>   def __init__(self, _news,_user):
>        self.News = _news
>        self.User = _user
> 

Voglio solo farti notare che questo modo di definire le classi è un cattivo 
idioma (sia in Python 2 che Python 3).
Per inciso:

(Python 2)
class News(object):
    […]

(Python 3)
class News:
    […]

L'argomento è stato ampiamente trattato altrove e un buon manuale può 
risolverti qualsiasi dubbio.

> 
> than i create my class in my code:
> 
> ...
> myUser = User("Mario","Rossi")
> myNews = News("My last news", myUser)
> 
> JSONstring = dumps(myNews)
> ...
> 

Tornando a noi: deduco che tu stia utilizzando `simplejson.dumps`

> but in the last line of code i get the error that the News class is not JSON 
> serializable.
> 

Anche in questo caso, la questione è arci-nota. Basterebbe google per questo!
Ad ogni modo: http://simplejson.readthedocs.org/en/latest/#encoders-and-decoders

La questione è che devi definire un `custom_encoder` per codificare un oggetto 
custom.
Banalmente questo:

def custom_encoder(obj):
    if isinstance(obj, News):
        return obj.to_json()
    return simplejson.encoder(obj)

JSONstring = dumps(range(2), default=custom_encoder)

dovrebbe risolverti il problema.
Quello che ti resta da fare è implementare il metodo `to_json` nella classe 
`News` che faccia al caso tuo, ricordando quali siano le conversioni di tipo 
Python2JSON di default 
(trovi una tabella a riguardo nella documentazione che ti ho segnalato).

Ciao
--
valerio


_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python

Rispondere a