Diferencia entre JSONParser y JSONRenderer

Estaba pasando portutorial de django rest framework en la serialización en la que me quedé atrapado enJSONRenderers yJSONParsersAbajo está el código mencionado allí:

from snippets.models import Snippet
from snippets.serializers import SnippetSerializer
from rest_framework.renderers import JSONRenderer
from rest_framework.parsers import JSONParser
from django.utils.six import BytesIO

snippet = Snippet(code='foo = "bar"\n')
snippet.save()

snippet = Snippet(code='print "hello, world"\n')
snippet.save()
serializer = SnippetSerializer(snippet)
serializer.data
# {'pk': 2, 'title': u'', 'code': u'print "hello, world"\n', 'linenos': False, 'language': u'python', 'style': u'friendly'}
content = JSONRenderer().render(serializer.data)
content
# '{"pk": 2, "title": "", "code": "print \\"hello, world\\"\\n", "linenos": false, "language": "python", "style": "friendly"}'

stream = BytesIO(content)
data = JSONParser().parse(stream)

Sé que JSONParser se usa para deserializar los datos y JSONRenderer se usa para serializarlos, pero todavía no tengo una buena comprensión de la diferencia entre la serialización y la deserialización de datos. ¿Puede alguien proporcionarme una comprensión clara de esto? (La respuesta con un ejemplo es muy apreciada).

¿Y también cómo funcionan JSONRenderer y JSONParser?

Respuestas a la pregunta(1)

Su respuesta a la pregunta