首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从父类调用时无法执行json.loads(json_data)

从父类调用时无法执行json.loads(json_data)
EN

Stack Overflow用户
提问于 2013-01-29 02:06:41
回答 2查看 382关注 0票数 0

我忘了提到,我使用下面的CURL发送数据:

代码语言:javascript
复制
curl -i -H "Content-Type: application/json" -X GET "http://appdev1.ischoolcampus.com/api/assignments" -d '{"guid":"teacherones-class","isTeacher":0}'

我有一个Assignments.GET()方法,它发送一些数据和数据的格式(JSON,XML等)为了..。

基于该格式的ClientRequest.Receive(data,method)将其发送给ClientRequest中的另一种方法。

JSON(数据)使用iSCJSON.Decode(数据)对数据进行解码。

Json.loads(数据)应该将其作为字典使用,但是它给了我以下错误:

代码语言:javascript
复制
AttributeError: 'NoneType' object has no attribute 'loads'

每个类位于不同的模块中:

代码语言:javascript
复制
Assignments - imports:
  ClientRequest - imports:
    iSCJSON.

我尝试过这样做,只从任务中调用iSCJSON.Decode(json_data),效果很好。我已经检查过,一旦json_data一直向下操练,它就会有它的内容。

但出于某种原因,我仍然收到一个错误。

有什么想法吗?

课程:

赋值

代码语言:javascript
复制
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')

ClientRequest

代码语言:javascript
复制
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

iSCJSON

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

发布于 2013-01-29 14:40:35

错误消息意味着json is None。也许您使用json作为变量名,对同名的模块进行跟踪?

票数 0
EN

Stack Overflow用户

发布于 2013-01-29 23:04:17

因此,我想出了一种方法来解决这个问题,将两个类合并成一个模块,并减少方法的数量。我已经将ClientRequest和另一个类ServerResponse组合到一个名为Server的类中,这个类只使用两个方法即发送和接收来执行这两个类的功能。然后,这两个方法确定要调用哪个类: iSCJSON或iSCXML来执行编码和解码。所以,我在没有实际解决的情况下,用更少的代码解决了问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14574530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档