2016-04-11 6 views
1

Ich möchte jeden JSON-Inhaltstyp mit meinem Erwartungstyp überprüfen. Ich erhalte JSON in meinem Python-Code wie folgt aus:Python-Anfrage JSON

a = request.json['a'] 
b = request.json['b'] 

, wenn ich a und b Typ-geprüft, es wird immer Unicode zurück. Ich habe es wie folgt aus:

type(a) # or 
type(b) # (always return: type 'unicode') 

Wie kann ich überprüfen, ob request.json['a']str ist, wenn request.json['a'] immer unicode ist?

+0

Unicode ist ein String-Encoding, also scheint eine Art von "Unicode" wahrscheinlich ein 'str' zu sein. Wenn es wie ein 'str' aussieht und wie ein' str' quatscht, muss es ein 'str' sein. –

Antwort

3

Ich vermute, Sie auf Python 2.x sind und nicht Python 3 (weil in Python 3 beide type('a') und type(u'a') sind str, nicht unicode)

So in Python 2, was Sie wissen sollten ist str und unicode beide sind Subklassen von basestring so statt Testen von mit

if isinstance(x, (str, unicode)): # equiv. to type(x) is str or type(x) is unicode 
    # something 

Sie (Python 2.x)

if isinstance(x, basestring): 
    # do something 
tun können

In Python 3 müssen Sie verwenden, um zwischen str und unicode, nur

if isinstance(x, str): 
    # do something 
0

Es gibt eine Reihe von integrierten Sequenztypen in Python, str ist einer von ihnen, und Unicode str ist ein anderer.

Also technisch nicht, es ist kein str, es ist ein Unicode str, aber Sie können es auch nur wie ein str behandeln.

Dokumentation here.

0

nicht unterscheiden Wenn Sie Python 2.x verwenden,:

isinstance(a, basestring) 

Oder wenn Sie Python 3.X verwenden:

isinstance(a, str)