不用\消毒JSON字符串

时间:2019-05-26 10:44:49

标签: python json serialization

考虑到SQL SELECT结果的成功查询,存在带有\ n和\的json输出。这让我在将json字符串反序列化为对象数组时感到困惑和障碍。您能否告诉我替换所有这些json字符串而没有换行符,空格和黑杠\的方法?

  dicts = [dict(row) for row in result]
  j = json.dumps(dicts ,  sort_keys=True,
  indent=None,
  default=default , separators=(',', ':'))

  return {
    'result':  j
  }

这是我的输出json,带有许多反斜杠\

{"result": "[{\"_access\":[{\"level\":\"read\",\"public\":true}],\"_created_at\":\"2019-05-26T09:57:10.494525\",\"_created_by\":\"473ee711-19a0-4309-8cb2-7f672fd93224\",\"_database_id\":\"\",\"_id\":\"3f674e29-29ba-4dcf-b9d9-f99a3c35866e\",\"_owner_id\":\"473ee711-19a0-4309-8cb2-7f672fd93224\",\"_updated_at\":\"2019-05-26T10:01:14.691527\",\"_updated_by\":\"473ee711-19a0-4309-8cb2-7f672fd93224\",\"book_label\":\"B198\",\"deleted_at\":null,\"deleted_by\":null,\"free_assign_date\":null,\"free_assign_end_date\":null,\"is_completed\":false,\"is_free_assigned\":true,\"progress_chapter\":1,\"total_chapters\":2,\"user_label\":\"user10\"}]"}

2 个答案:

答案 0 :(得分:1)

字典中的["result"]条目是一个字符串。您只需要解析它即可。 json.dumps的作用与您所寻找的相反—将JSON转换为字符串。您需要json.loads,它将字符串转换为JSON数据。

答案 1 :(得分:0)

import json
result_str = "[{\"_access\":[{\"level\":\"read\",\"public\":true}],\"_created_at\":\"2019-05-26T09:57:10.494525\",\"_created_by\":\"473ee711-19a0-4309-8cb2-7f672fd93224\",\"_database_id\":\"\",\"_id\":\"3f674e29-29ba-4dcf-b9d9-f99a3c35866e\",\"_owner_id\":\"473ee711-19a0-4309-8cb2-7f672fd93224\",\"_updated_at\":\"2019-05-26T10:01:14.691527\",\"_updated_by\":\"473ee711-19a0-4309-8cb2-7f672fd93224\",\"book_label\":\"B198\",\"deleted_at\":null,\"deleted_by\":null,\"free_assign_date\":null,\"free_assign_end_date\":null,\"is_completed\":false,\"is_free_assigned\":true,\"progress_chapter\":1,\"total_chapters\":2,\"user_label\":\"user10\"}]"

js_obj = json.loads(result_str)

print json.dumps(js_obj)

尝试一下