On 02/20/2010 12:57 PM, jpc wrote:
It follows my work: import json class TrivialSageJSON(json.JSONEncoder): """ http://docs.python.org/library/json.html#encoders-and-decoders sage/devel/sage-main/sage/server/simple/twist.py (here there's a "simple_jsonize") """ def default(self,o): try: if isinstance(o,sage.rings.real_mpfr.RealLiteral) or isinstance(o,sage.rings.real_mpfr.RealNumber): res = float(o) elif isinstance(o,sage.rings.real_mpfr.Integer): res = int(o) else: raise TypeError except TypeError: pass else: return res return JSONEncoder.default(self, o)if __name__ == "__main__": print TrivialSageJSON().encode({"a": 1.8}) print TrivialSageJSON().encode({"a": sqrt(2).n()}) print TrivialSageJSON().encode({"a": 123}) If any thing better (more general) appears please let me know.
I think this is both more general and less fragile: sage: sage.rings.all.is_RealNumber(2.3) True sage: sage.rings.all.is_RealNumber(float(2.3)) False sage: sage.rings.all.is_Integer(2) True sage: sage.rings.all.is_Integer(int(2)) False Thanks, Jason -- To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/sage-support URL: http://www.sagemath.org
