def pretty_json(value): try: if scrub(value) is None: return "null" elif isinstance(value, basestring): if isinstance(value, str): value = utf82unicode(value) try: return quote(value) except Exception, e: from pyLibrary.debugs.logs import Log try: Log.note("try explicit convert of string with length {{length}}", length= len(value)) acc = [u"\""] for c in value: try: try: c2 = ESCAPE_DCT[c] except Exception, h: c2 = c c3 = unicode(c2) acc.append(c3) except BaseException, g: pass # Log.warning("odd character {{ord}} found in string. Ignored.", ord= ord(c)}, cause=g) acc.append(u"\"") output = u"".join(acc) Log.note("return value of length {{length}}", length= len(output)) return output
def pretty_json(value): try: if scrub(value) is None: return "null" elif isinstance(value, basestring): if isinstance(value, str): value = utf82unicode(value) try: return quote(value) except Exception, e: from pyLibrary.debugs.logs import Log try: Log.note( "try explicit convert of string with length {{length}}", length=len(value)) acc = [u"\""] for c in value: try: try: c2 = ESCAPE_DCT[c] except Exception, h: c2 = c c3 = unicode(c2) acc.append(c3) except BaseException, g: pass # Log.warning("odd character {{ord}} found in string. Ignored.", ord= ord(c)}, cause=g) acc.append(u"\"") output = u"".join(acc) Log.note("return value of length {{length}}", length=len(output)) return output
def unicode_key(key): """ CONVERT PROPERTY VALUE TO QUOTED NAME OF SAME """ if not isinstance(key, basestring): from pyLibrary.debugs.logs import Log Log.error("{{key|quote}} is not a valid key", key=key) return quote(unicode(key))
def string2quote(value): if value == None: return "None" return quote(value)
return "{\n" + INDENT + (",\n" + INDENT).join(values) + "\n}" except Exception, e: from pyLibrary.debugs.logs import Log from pyLibrary.collections import OR if OR(not isinstance(k, basestring) for k in value.keys()): Log.error("JSON must have string keys: {{keys}}:", keys=[k for k in value.keys()], cause=e) Log.error("problem making dict pretty: keys={{keys}}:", keys=[k for k in value.keys()], cause=e) elif value in (None, Null): return "null" elif isinstance(value, basestring): if isinstance(value, str): value = utf82unicode(value) try: return quote(value) except Exception, e: from pyLibrary.debugs.logs import Log try: Log.note("try explicit convert of string with length {{length}}", length=len(value)) acc = ['"'] for c in value: try: try: c2 = ESCAPE_DCT[c] except Exception, h: c2 = c c3 = unicode(c2) acc.append(c3) except BaseException, g:
keys=[k for k in value.keys()], cause=e ) Log.error( "problem making dict pretty: keys={{keys}}:", keys=[k for k in value.keys()], cause=e ) elif value in (None, Null): return "null" elif isinstance(value, basestring): if isinstance(value, str): value = utf82unicode(value) try: return quote(value) except Exception, e: from pyLibrary.debugs.logs import Log try: Log.note("try explicit convert of string with length {{length}}", length=len(value)) acc = [u"\""] for c in value: try: try: c2 = ESCAPE_DCT[c] except Exception: c2 = c c3 = unicode(c2) acc.append(c3) except BaseException:
pass # Log.warning("odd character {{ord}} found in string. Ignored.", ord= ord(c)}, cause=g) acc.append(u"\"") output = u"".join(acc) Log.note("return value of length {{length}}", length= len(output)) return output except BaseException, f: Log.warning("can not even explicit convert", f) return "null" elif isinstance(value, Mapping): try: if not value: return "{}" items = list(value.items()) if len(items) == 1: return "{" + quote(unicode(items[0][0])) + ": " + pretty_json(items[0][1]).strip() + "}" items = sorted(items, lambda a, b: value_compare(a[0], b[0])) values = [quote(unicode(k))+": " + indent(pretty_json(v)).strip() for k, v in items if v != None] return "{\n" + INDENT + (",\n"+INDENT).join(values) + "\n}" except Exception, e: from pyLibrary.debugs.logs import Log from pyLibrary.collections import OR if OR(not isinstance(k, basestring) for k in value.keys()): Log.error("JSON must have string keys: {{keys}}:", { "keys": [k for k in value.keys()] }, e) Log.error("problem making dict pretty: keys={{keys}}:", { "keys": [k for k in value.keys()]
# Log.warning("odd character {{ord}} found in string. Ignored.", ord= ord(c)}, cause=g) acc.append(u"\"") output = u"".join(acc) Log.note("return value of length {{length}}", length=len(output)) return output except BaseException, f: Log.warning("can not even explicit convert", f) return "null" elif isinstance(value, Mapping): try: if not value: return "{}" items = list(value.items()) if len(items) == 1: return "{" + quote(unicode( items[0][0])) + ": " + pretty_json( items[0][1]).strip() + "}" items = sorted(items, lambda a, b: value_compare(a[0], b[0])) values = [ quote(unicode(k)) + ": " + indent(pretty_json(v)).strip() for k, v in items if v != None ] return "{\n" + INDENT + (",\n" + INDENT).join(values) + "\n}" except Exception, e: from pyLibrary.debugs.logs import Log from pyLibrary.collections import OR if OR(not isinstance(k, basestring) for k in value.keys()): Log.error("JSON must have string keys: {{keys}}:", {"keys": [k for k in value.keys()]}, e)