title: Flask TypeError 'is not JSON serializable' - nested dictionary
body: <p>i am using Flask as framework for my server, and while returning a response i get the following error:</p>
  
  <pre><code>&gt; Traceback (most recent call last):
    File "C:\Python27\lib\site-packages\flask\app.py", line 1612, in full_dispatch_request
      rv = self.dispatch_request()
    File "C:\Python27\lib\site-packages\flask\app.py", line 1598, in dispatch_request
      return self.view_functions[rule.endpoint](**req.view_args)
    File "C:\Python27\lib\site-packages\flask_restful\__init__.py", line 480, in wrapper
      resp = resource(*args, **kwargs)
    File "C:\Python27\lib\site-packages\flask\views.py", line 84, in view
      return self.dispatch_request(*args, **kwargs)
    File "C:\Python27\lib\site-packages\flask_restful\__init__.py", line 595, in dispatch_request
      resp = meth(*args, **kwargs)
    File "rest.py", line 27, in get
      return jsonify(**solution)
    File "C:\Python27\lib\site-packages\flask\json.py", line 263, in jsonify
      (dumps(data, indent=indent, separators=separators), '\n'),
    File "C:\Python27\lib\site-packages\flask\json.py", line 123, in dumps
      rv = _json.dumps(obj, **kwargs)
    File "C:\Python27\lib\json\__init__.py", line 251, in dumps
      sort_keys=sort_keys, **kw).encode(obj)
    File "C:\Python27\lib\json\encoder.py", line 209, in encode
      chunks = list(chunks)
    File "C:\Python27\lib\json\encoder.py", line 434, in _iterencode
      for chunk in _iterencode_dict(o, _current_indent_level):
    File "C:\Python27\lib\json\encoder.py", line 408, in _iterencode_dict
      for chunk in chunks:
    File "C:\Python27\lib\json\encoder.py", line 332, in _iterencode_list
      for chunk in chunks:
    File "C:\Python27\lib\json\encoder.py", line 332, in _iterencode_list
      for chunk in chunks:
    File "C:\Python27\lib\json\encoder.py", line 442, in _iterencode
      o = _default(o)
    File "C:\Python27\lib\site-packages\flask\json.py", line 80, in default
      return _json.JSONEncoder.default(self, o)
    File "C:\Python27\lib\json\encoder.py", line 184, in default
      raise TypeError(repr(o) + " is not JSON serializable")
  TypeError: {'origin': u'porto', 'dest': u'lisboa', 'price': '31', 'date': '2017-12-23', 'url': u'https://www.google.pt/flights/#search;f=opo;t=lis;d=2017-12-23;r=2017-12-24'} is not JSON serializable
  </code></pre>
  
  <p>i have the following function:</p>
  
  <pre><code>from flask import Flask, request, jsonify
  from flask_restful import Resource, Api
  from flask_cors import CORS, cross_origin
  from json import dumps
  import flights
  import solveProblem
  
  app = Flask(__name__)
  api = Api(app)
  CORS(app)
  
  class Flights(Resource):
      def get(self, data):
          print 'received data from client: ' + data
          solution = solveProblem.solve(data)
          print 'got the solution from the script! \nSOLUTION: \n'
          print solution
          return jsonify(solution)
  
  api.add_resource(Flights, '/flights/&lt;string:data&gt;')
  
  if __name__ == '__main__':
      app.run()
  </code></pre>
  
  <p>while debugging the problem, i found the following solutions which did not work:</p>
  
  <p>1) return solution instead of {'solution': solution}</p>
  
  <p>2) do jsonify(solution)</p>
  
  <p>3) do jsonify(**solution)</p>
  
  <p>none of the above worked for me;
  i wonder why this happens, when i am trying to return a valid dictionary:</p>
  
  <pre><code>{'flights': [[{'origin': u'porto', 'dest': u'lisboa', 'price': '31', 'date': '2017-12-23', 'url': u'https://www.google.pt/flights/#search;f=opo;t=lis;d=2017-12-23;r=2017-12-24'}]], 'cost': '31'}
  </code></pre>
  
  <p>any help is appreciated.
  Thanks</p>