2016-03-28 32 views
1

Veritabanımdaki verileri okumak ve ardından bir json formatını python web sunucusuna (web.py) göndermek ve döndürmek istiyorum. Bu hata:Python (json): TypeError: beklenen dize veya arabellek

TypeError: beklenen dize veya tampon yükleri ve yük de döker ve i will hem piton ve json formatına çok yeniyim anlıyorum .as (neden ben anlayamıyorum Hangi) dökümü arasındaki Anahtarlı

Bana yardım ederseniz çok müteşekkir olun (bu problemle ilgili birçok gönderi gördünüz ama ne yapılacağını henüz anlayamadım)


Traceback (most recent call last): 
    File "/usr/local/lib/python2.7/dist-packages/web.py-0.37-py2.7.egg/web/application.py", line 239, in process 
    return self.handle() 
    File "/usr/local/lib/python2.7/dist-packages/web.py-0.37-py2.7.egg/web/application.py", line 230, in handle 
    return self._delegate(fn, self.fvars, args) 
    File "/usr/local/lib/python2.7/dist-packages/web.py-0.37-py2.7.egg/web/application.py", line 420, in _delegate 
    return handle_class(cls) 
    File "/usr/local/lib/python2.7/dist-packages/web.py-0.37-py2.7.egg/web/application.py", line 396, in handle_class 
    return tocall(*args) 
    File "/home/arda/Downloads/arda/tmp/tornado/ps/sa2.py", line 98, in GET 
    return ara_json(isim) 
    File "/home/arda/Downloads/arda/tmp/tornado/ps/sa2.py", line 53, in ara_json 
    subjects = json.loads(result).read() 
    File "/usr/lib/python2.7/json/__init__.py", line 338, in loads 
    return _default_decoder.decode(s) 
    File "/usr/lib/python2.7/json/decoder.py", line 366, in decode 
    obj, end = self.raw_decode(s, idx=_w(s, 0).end()) 
TypeError: expected string or buffer 
+2

Özel durumunuzun izini gösterebilir misiniz? Sadece tür ve kısa mesajla, kodunuzun hangi bölümünün bu hatayı artırdığını bilmek zordur ve traceback bunu çok net bir şekilde gösterecektir. – Blckknght

+0

Üzgünüm. Sadece düzenlenmiş, umuyoruz ki –

cevap

3

İki satırı değiştirmeniz gerekir ve iyi çalışır. denekler = json.loads (sonuç) .read()

  • ve bu gibi yapın:

    1. bu satırı kaldırmak dönüş json.dumps (sonuç, girinti = 4)

    Umarım, o sana yardım edeceğim. :)

  • +0

    İlk cevapta yazdığım gibi bunu aynen yaptım. Her iki cevap da çok yardımcı oldu –

    4

    json.loads() 0 bir dizi bekler. Bunu yapmanın doğru yolu, önce verilerinizi oluşturmak ve size bir json nesnesi (aslında bir dize) verecek olan json.dumps'u kullanmaktır. Bu yardımcı olur umarım.

    +1

    Strings * * nesneleridir. Python'daki her şey bir nesnedir. – zondo

    +0

    evet öyle. Ama json.dumps' json dizgesini döndürür ve json nesnesini döndürmez. Bunu açıklığa kavuşturmak istedim. – Bhimsen

    +0

    Teşekkür ederiz. Anladığım kadarıyla yük kullanmanın gereksiz olduğunu biliyoruz. \t json.dumps (sonuç) istediğimi verdi. Daha fazla çalışmak zorunda kaldı! :) –