Python原始json字符串序列化

时间:2017-03-02 07:51:52

标签: python json serialization

我在python中有一个字典,下面有一个字符串变量(当然在json中有很多其他字符串字段,但只有少数是json转义字符串)

duplicate

如何将这样的对象转换为普通的json,如下所示:

obj_dict = dict(details="{\"name\":\"Vyshakh\",\"martial_status\" : \"Single\"}")

在使用Jackson的Java中我可以使用@JsonRawValue注释一个字段,Python中实现相同的最佳方法是什么

2 个答案:

答案 0 :(得分:1)

重写编码器以返回原始json字符串。

import json

class RawJSON(str): pass

origEnc = json.encoder.encode_basestring_ascii
def rawEnc(obj):
  if isinstance(obj, RawJSON):
    return obj
  return origEnc(obj)
json.encoder.encode_basestring_ascii = rawEnc

obj_dict = dict(details=RawJSON("{\"name\":\"Vyshakh\",\"martial_status\" : \"Single\"}"))
print json.dumps(obj_dict) # {"details": {"name":"Vyshakh","martial_status" : "Single"}}

答案 1 :(得分:0)

标准库中的json模块具有json.loads()

将JSON兼容字符串传递给json.loads(),它将返回一个字典对象。

来自Python解释器:

>>> import json
>>> help(json.loads)
Help on function loads in module json:

loads(s, encoding=None, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)
    Deserialize ``s`` (a ``str`` instance containing a JSON
    document) to a Python object.