json.loads不会发表在Python AngularJS二进制JSON工作 [英] json.loads doesn't work with binary JSON posted by AngularJS in Python

查看:255
本文介绍了json.loads不会发表在Python AngularJS二进制JSON工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我编码Django和我的前端使用Angularjs是这样的:

在controller.js

  $ scope.reserve = {
    储备:{
        持续时间:{
            startTimeUnix:空,
            的startTime:صبورباشید......
            结束时间:零
        },
        服务:空,
        储库:{
            FIRST_NAME:空,
            姓氏:空,
            电话:空
        }
    },
    块:{
        持续时间:零
    },
    is_block:假的,
    taken_time:空,
    工作人员:صبورباشید......
};$ scope.submitAdminTime =功能(){
    $ http.post(/日程安排/管理/块/,{
            数据:$ scope.reserve
        },{
            头:{
                内容类型:应用/ JSON
            }
        })
        .success(功能(数据){
            的console.log(数据);
        });
};

在views.py

  @csrf_exempt
高清admin_block_time(要求):
    尝试:
        JSON_OBJECT = json.loads(request.body)
        打印(是)
    除了ValueError错误:
        打印('无')

打印什么!

我不知道为什么 json.loads()不工作了!我张贴另一个问题<一href=\"http://stackoverflow.com/questions/33876124/converting-json-to-dictionary-by-python\">here并随访所有的答案。

request.body

  B'{
储备:{
    持续时间:{
        startTimeUnix:,
        startTime时:\\ xd8 \\ XB5 \\ xd8 \\ xa8 \\ xd9 \\ X88 \\ xd8 \\ XB1 \\ xd8 \\ xa8 \\ xd8 \\ xa7 \\ xd8 \\ XB4 \\ XDB \\ x8c \\ xd8 \\ XAF ...
        ENDTIME:\\ XDB \\ XB1 \\ XDB \\ XB3 \\ XDB \\ xb9 \\ XDB \\ XB4 / \\ XDB \\ XB0 \\ XDB \\ xb9 / \\ XDB \\ XB0 \\ XDB \\ XB4 \\ XDB \\ XB1 \\ XDB \\ XB2:\\ XDB \\ XB2 \\ XDB \\ XB0
        endTimeUnix:1448441400
    },
    服务:空,
    贮库:{
        FIRST_NAME:\\ xd9 \\ X85 \\ xd8 \\ XB1 \\ XDB \\ x8c \\ xd9 \\ X85
        姓氏:\\ xd9 \\ X85 \\ xd9 \\ X88 \\ xd8 \\ XB3 \\ xd9 \\ X88 \\ XDB \\ x8c
        手机:09124955173
    }
},
块:{
    持续时间:空
},
is_block:假的,
taken_time:空,
工作人员:阿里,
服务:
    O5KLFPZB
]
}


解决方案

在Python 3中,你需要为德code 字节进入之前,你可以加载JSON字符串。

  json.loads(request.body.de code(UTF-8))

I am coding in Django and my front-end uses Angularjs like this:

In controller.js

$scope.reserve = {
    reserve: {
        duration: {
            startTimeUnix: null,
            startTime: "صبور باشید...",
            endTime: null
        },
        service: null,
        reserver: {
            first_name: null,
            last_name: null,
            phone: null
        }
    },
    block: {
        duration: null
    },
    is_block: false,
    taken_time: null,
    staff: "صبور باشید..."
};

$scope.submitAdminTime = function() {
    $http.post("/schedule/admin/block/", {
            data: $scope.reserve
        }, {
            "headers": {
                "Content-Type": "application/json"
            }
        })
        .success(function(data) {
            console.log(data);
        });
};

In views.py

@csrf_exempt
def admin_block_time(request):
    try:
        json_object = json.loads(request.body)
        print('yes')
    except ValueError:
        print('no')

Prints nothing!

I don't know why json.loads() doesn't work at all! I posted another question here and followed up all the answers.

request.body

b '{
"reserve": {
    "duration": {
        "startTimeUnix": "",
        "startTime": "\xd8\xb5\xd8\xa8\xd9\x88\xd8\xb1 \xd8\xa8\xd8\xa7\xd8\xb4\xdb\x8c\xd8\xaf...",
        "endTime": "\xdb\xb1\xdb\xb3\xdb\xb9\xdb\xb4/\xdb\xb0\xdb\xb9/\xdb\xb0\xdb\xb4        \xdb\xb1\xdb\xb2:\xdb\xb2\xdb\xb0",
        "endTimeUnix": 1448441400
    },
    "service": null,
    "reserver": {
        "first_name": "\xd9\x85\xd8\xb1\xdb\x8c\xd9\x85",
        "last_name": "\xd9\x85\xd9\x88\xd8\xb3\xd9\x88\xdb\x8c",
        "phone": "09124955173"
    }
},
"block": {
    "duration": null
},
"is_block": false,
"taken_time": null,
"staff": "alireza",
"service": [
    "O5KLFPZB"
]
}
'

解决方案

In Python 3, you need to decode the bytes into a string before you can load the json.

json.loads(request.body.decode('utf-8'))

这篇关于json.loads不会发表在Python AngularJS二进制JSON工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆