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

Reply via email to