Python 为什么整数字典键作为字符串从会话中检索?
在下面的代码中,为什么在Python 为什么整数字典键作为字符串从会话中检索?,python,django,Python,Django,在下面的代码中,为什么在session\u retrieve视图中将people字典的1键作为字符串检索?如何保持原始(整数)类型 另外,为什么45值不会发生相同的情况 def session_add(request): people = { 1: { 'name': 'Tom', 'age': 45, } } request.session['people'] = people
session\u retrieve
视图中将people
字典的1
键作为字符串检索?如何保持原始(整数)类型
另外,为什么45
值不会发生相同的情况
def session_add(request):
people = {
1: {
'name': 'Tom',
'age': 45,
}
}
request.session['people'] = people
print(request.session['people'])
# prints {1: {'name': 'Tom', 'age': 45}}
return HttpResponse('added')
def session_retrieve(request):
print(request.session['people'])
# prints {'1': {'name': 'Tom', 'age': 45}}
return HttpResponse('retrieved')
这是为了JSON兼容性。因为键本质上是JavaScript对象的属性,所以它们是字符串。字段可以是任何基本体或其他对象,因此45仍然是一个数字
文档中已经提到了这种行为。以美国为例, 另外,为什么
45
值不会发生相同的情况
def session_add(request):
people = {
1: {
'name': 'Tom',
'age': 45,
}
}
request.session['people'] = people
print(request.session['people'])
# prints {1: {'name': 'Tom', 'age': 45}}
return HttpResponse('added')
def session_retrieve(request):
print(request.session['people'])
# prints {'1': {'name': 'Tom', 'age': 45}}
return HttpResponse('retrieved')
JSON只支持字符串键,但值可以是任何值