I'm using a version of the jsonGQL referenced in question 2114659 and available in the svn for eve-pos-tracker.
I have the same question as this poor app engine developer: https://groups.google.com/group/google-appengine/browse_thread/thread/f7a44b707119013c/81ba15c883ba95fe
My json serialization crashes when it hits the binary data for the png image (0x89) in my model. I don't need to serialize this data so I'd either like to skip the field or simply output something like <binary>
.
this is the handler:
class FillList(webapp.RequestHandler):
def get(self):
fills = Fill.all()
self.response.headers['Content-Type'] = 'application/json'
self.response.out.write(jsonGQL.encode(fills.fetch(100)))
I tried this:
elif isinstance(obj, db.Blob):
return "<binary>"
but the error persists. The traceback is:
Traceback (most recent call last):
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/ext/webapp/_webapp25.py", line 701, in __call__
handler.get(*groups)
File "~/app/api.py", line 61, in get
self.response.out.write(jsonGQL.encode(fills.fetch(100)))
File "~/app/jsonGQL.py", line 103, in encode
return GqlEncoder().encode(input, exclude=[])
File "~/app/jsonGQL.py", line 87, in encode
return simplejson.JSONEncoder.encode(self, o)
File "~/app/simplejson/encoder.py", line 216, in encode
chunks = list(chunks)
File "~/app/simplejson/encoder.py", line 482, in _iterencode
for chunk in _iterencode_list(o, _current_indent_level):
File "~/app/simplejson/encoder.py", line 380, in _iterencode_list
for chunk in chunks:
File "~/app/simplejson/encoder.py", line 496, in _iterencode
for chunk in _iterencode(o, _current_indent_level):
File "~/app/simplejson/encoder.py", line 485, in _iterencode
for chunk in _iterencode_dict(o, _current_indent_level):
File "~/app/simplejson/encoder.py", line 439, in _iterencode_dict
yield _encoder(value)
File "~/app/simplejson/encoder.py", line 50, in py_encode_basestring_ascii
s = s.decode('utf-8')
File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/encodings/utf_8.py", line 16, in decode
return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: 'utf8' codec can't decode byte 0x89 in position 0: invalid start byte