我偶然发现了一个我无法解决的奇怪问题:
在我的 Django 应用程序中,有一个方法被来自 java 小程序的 POST 命中,该方法向它发送一个 JSON 对象。Django 方法像这样解析它:
req = json.loads(request.raw_post_data)
并根据结果返回一个值。我还没有写这段代码,但是昨天我被派去调查这个方法中触发的错误。它说有“ValueError:期望属性名称:第1行第1列(char 1)”。
我发现我的原始帖子数据如下所示:
{#012#011"ImmutableMachineFactors": #012#011{#012#011#011"machineName": "lukka",#012#011#011"osName": "MacOS"}}
它的类型是字符串,但是,我尝试用空格替换这些奇怪的字符或什么都没有失败。它只会忽略 sub() 命令。我知道 raw_post_data 返回一个字节串,但是当我尝试使用以下方法将其转换为常规字符串时:
mystring.decode('utf-8')
它确实添加了 u'' 符号,但没有删除那些奇怪的字符。更奇怪的是,在很多情况下(在我的个人机器上),Django 很乐意将这种数据转换为 JSON,但有时它只会失败,这让我相信触发错误的 JSON 格式不正确,但是当我删除时所有的#011 和#012 字符,它完美解析。
我的问题是:1)那些疯狂的事情是什么?(#011,#012)。我试着用谷歌搜索,但这些都是在搜索中很常见的东西,所以我找不到任何相关的东西。2)我怎样才能把这个字节串变成一个普通的字符串,这样我就可以替换那些字符?或者它是解决这个问题的扭曲方式?
谢谢!卢卡