【问题标题】:Remove backslashes from Json String in Django Rest Framework从 Django Rest Framework 中的 Json 字符串中删除反斜杠
【发布时间】:2018-06-24 20:07:20
【问题描述】:
dct_data = json_tour_data.__dict__
tour_data = json.dumps(dct_data)

如何从 json 中删除这些反斜杠?这是我的输出:

"{\"strFileOpenDateAjxKey\": \"2018-01-16 12:40:22.526417\", 
\"strFilePassengerAjxKey\": \"Zahra Walji\", \"strFileOpenMobileAjxKey\": 
\"46464664\", \"strFileOpenDepartmentAjxKey\": \"Finance department\", 
\"strFileOpenAccountCodeAjxKey\": \"CARTZS\", 
\"strFileOpenProfileCodeAjxKey\": \"CARTZS\", 
\"strFileopenOriginalCountryIdAjxKey\": 61, \"blnBoundAjxKey\": 1, 
\"strTransactionCurrencyJsKey\": \"Shillings\", 
\"intCurrencyPrecisionJsKey\": 3, \"strPackageTypeJsKey\": \"PKG\", 
\"strUserNameAjxKey\": \"admin\", \"strPasswordAjxKey\": \"1234\"}"

【问题讨论】:

  • 你可以使用替换 response.replace("\'", '"')

标签: python json django-rest-framework


【解决方案1】:

您可以为此使用replace("\'", '"')

     json = '''{\"strFileOpenDateAjxKey\": \"2018-01-16 12:40:22.526417\", 
      \"strFilePassengerAjxKey\": \"Zahra Walji\", \"strFileOpenMobileAjxKey\": 
      \"46464664\", \"strFileOpenDepartmentAjxKey\": \"Finance department\", 
      \"strFileOpenAccountCodeAjxKey\": \"CARTZS\", 
      \"strFileOpenProfileCodeAjxKey\": \"CARTZS\", 
      \"strFileopenOriginalCountryIdAjxKey\": 61, \"blnBoundAjxKey\": 1, 
      \"strTransactionCurrencyJsKey\": \"Shillings\", 
      \"intCurrencyPrecisionJsKey\": 3, \"strPackageTypeJsKey\": \"PKG\", 
      \"strUserNameAjxKey\": \"admin\", \"strPasswordAjxKey\": \"1234\"}'''
newString = json.replace("\'", '"')
print(newString)

检查来自here

这是在我身边按下运行时的输出。

【讨论】:

  • 当我使用 pdb 从终端尝试时没有问题。但是在使用 RESTer 检索服务时,存在同样的问题。
  • 我试过你的链接 (repl.it/repls/VillainousRemorsefulSulphurbutterfly)。但输出中有反斜杠。就像我使用 pdb 尝试自己的终端一样。
  • 嘿.. #krezus 我的问题解决了。谢谢您的回答。我刚刚删除了 json.dumps(dct_data)。因为已经是json格式了
  • 这可能是解决方案,但不是正确的方法。
  • @RushabhSudame 即使您认为答案不应该是这样,您也不必投反对票。它可能对某人有所帮助,并且可能再次有所帮助。
【解决方案2】:

我建议检查您的 Response 对象,在您的视图中解析您的 tour_data 变量/字典。我最初和你有同样的问题,但这是我改变的。

原实现:Response(json.dumps(a_dictionary), status=status.HTTP_200_OK)

新实现:Response(a_dictionary, status=status.HTTP_200_OK, content_type='json')

这里的关键是: 1.摆脱json.dumps转换方法,只通过一个普通的python字典,例如见a_dictionary。 2.在Response对象上设置content_type='json'

【讨论】:

    【解决方案3】:

    答案是你只需要玩json.dumps()json.loads()

    以下是我的有效代码:-

    import json
    json_data = {'key1': 'first'}
    json_data = json.dumps(json_data)
    return {
        'statusCode': 200,
        'schools':  json.loads(json_data)
    }
    

    以上代码输出如下:

    Response:
    {
      "schools": {
        "key1": "first"
      },
      "statusCode": 200
    }
    

    【讨论】:

      【解决方案4】:

      致任何可能面临此问题的人。

      简单地说: 最初的问题似乎是获取 JSON 数据(我强调,它已经是 JSON)并再次将其呈现为 JSON。

      dct_data = json_tour_data.dict

      tour_data = json.dumps(dct_data)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多