moarjson

Easily json dump types and classes


License
MIT
Install
pip install moarjson==0.3.4

Documentation

moarjson

Build Status

Install

pip install moarjson

Basic usage

import moarjson as json

from datetime import datetime

json.dumps(datetime.now()) # Fails

# Tell json to convert datetime objects to str first
json.register(datetime, str)

json.dumps(datetime.now()) # Success

moarjson keeps track of all the types you want to encode to json.

import moarjson as json

from datetime import datetime

# Also available as decorator
@json.register(datetime)
def convert_datetime(obj):
    return obj.strftime(format='%Y-%m-%d %H:%M')

# OR with lambda
json.register(datetime, lambda x: x.strftime(format='%Y-%m-%d %H:%M'))

Django models

Django user model field:

from django.contrib.auth.models import User

@json.register(User)
def convert_user(user):
  return {
     'id': user.id,
     'username': user.username
  }

def user_view(request):
  # Json encoded user object
  json_dump = json.dumps(User.objects.get(pk=1))

  return HttpResponse(json_dump, content_type='application/json')

User.objects.all() is an iterable, so register iterables that first. Convert any iterable to a list::

import collections
json.register(collections.Iterable, list)

def user_list_view(request):
  # List of users
  json_dump = json.dumps(User.objects.all())

  return HttpResponse(json_dump, content_type='application/json')

Contribution

Code validation

The code is valid if it passes flake8. Imports are sorted with isort.

Testing

For testing py.test is used.