言い忘れましたが、次の CURL を使用してデータを送信しています。
curl -i -H "Content-Type: application/json" -X GET "http://appdev1.ischoolcampus.com/api/assignments" -d '{"guid":"teacherones-class","isTeacher":0}'
一部のデータとデータの形式 (JSON、XML など) を送信する Assignments.GET() メソッドがあります...
ClientRequest.Receive(data,method) フォーマットに基づいて、それを ClientRequest の別のメソッドに送信します...
JSON(data) は、iSCJSON.Decode(data)... を使用してデータをデコードします。
json.loads(data) はそれを辞書として吐き出すはずですが、代わりに次のエラーが表示されます:
AttributeError: 'NoneType' object has no attribute 'loads'
各クラスは異なるモジュールにあります:
Assignments - imports:
ClientRequest - imports:
iSCJSON.
Assignments から iSCJSON.Decode(json_data) を呼び出すだけでこれを試してみましたが、うまくいきました。json_data が完全にドリルダウンされたら、実際にコンテンツがあることを確認しました。
しかし、何らかの理由でまだエラーが発生します。
何か案は?
クラス:
課題
import sys
sys.path.insert(1,'/Library/Server/Web/Data/Sites/iconnect/')
import web
if 'iSCModules.mod_ClientRequest' in sys.modules:
del(sys.modules["iSCModules.mod_ClientRequest"])
if 'iSCModules.mod_ServerResponse' in sys.modules:
del(sys.modules["iSCModules.mod_ServerResponse"])
from iSCModules.mod_ClientRequest import ClientRequest
from iSCModules.mod_ServerResponse import ServerResponse
#from iSCModules.mod_iSCJSON import iSCJSON
class Assignments:
def GET(self):
sentData = web.data()
#query = iSCJSON.Decode(sentData)
print "Sent Data is: " + sentData
query = ClientRequest.Receive(sentData, 'JSON')
# \/ Replace With Code \/
print "Query from Assignments is: " + query
data = query
# /\ Replace with Code /\
return ServerResponse.Send(data, 'JSON')
クライアントリクエスト
import sys
sys.path.insert(1,'/Library/Server/Web/Data/Sites/iconnect/')
import web
#if 'iSCModules.mod_iSCJSON' in sys.modules:
# del(sys.modules["iSCModules.mod_iSCJSON"])
from mod_iSCJSON import iSCJSON
class ClientRequest:
@staticmethod
def Receive(data, method):
#sentData = web.data() #Need to figure out why this doesn't work...
# Remove method from parameters, Set method using logic to determine format of data sent from client.
query = getattr(ClientRequest, method)(data)
if (query):
print "Query from ClientRequest is: " + query
return query
@staticmethod
def JSON(data):
decodedData = iSCJSON.Decode(data)
if (decodedData):
return decodedData
ISJSON
import sys
sys.path.insert(1,'/Library/Server/Web/Data/Sites/iconnect/')
import json
class iSCJSON:
@staticmethod
def Encode(json_string, compact=False):
if (compact):
result = json.dumps(json_string,separators=(',',':'))
else:
result = json.dumps(json_string)
if ( result ):
return result
@staticmethod
def Decode(json_data, encoding=''):
print "JSON Data is: " + json_data
result = json.loads(json_data)
print "Result of iSCJSON is: " + result
if ( result ):
return result