你如何命名你的json方法?

时间:2014-02-20 18:22:16

标签: python objective-c json

我在代码中使用了json。我在Objective-Cpython(当然是3)中使用它。有一天,我可能会被迫在java中使用它。所有这些平台都有用于将json字符串解析为本机对象的库,通常是包含其中内容的字典。

所以每次我编写一个产生或消耗json数据的方法/函数时,我总是被撕裂。因为有时它们会以字符串形式消费或生成它,有时它们会以更高级别的形式消费或生成它。

例如,假设我有一个Script对象可以调整某些调度,我可以将其转换为json以便于http传输或mongo-ification等等。所以我提出了两种方法:

class Script(object):
    def toJson(self):
        ...
    def fromJson(self, json):
        ...

虽然这些方法表明Script对象可以填充自身或通过json表示自己,但是完全不清楚哪种形式。 json变量是dict还是字符串?

所以我想知道其他人是否已经发展出有助于澄清这一点的命名约定?

2 个答案:

答案 0 :(得分:1)

我遇到了类似的问题(在我的例子中,它是xml)。它可能不是很优雅,但我倾向于在返回该类型时使用类型名称,并在返回类型的字符串化版本时附加“str”。例如:

class Script:
    def tojson(self):
        ...
    def tojsonstr(self):
        ...
    def fromjson(self, json):
        ...
    def fromjsonstr(self, jsonstr):
        ...

我已经尝试过添加下划线,但从长远来看,这只会产生繁琐的标识符(而且我的手指会扭曲输入更长的字符串)。

我想你可以变聪明,并测试传递的isinstance对象(至少在fromX()的情况下,例如:

def fromjson(self, json):
    if isinstance(json, basestring):
        # assume str
    else:
        # assume json object
    ...

答案 1 :(得分:0)

因为我也做了一些pymongo,通常将这些结构化词典称为 docs ,我开始使用该术语(在与其他地方的许多同行讨论这个问题之后)。所以我的方法/功能看起来像:

def toDoc(self):
    ...

- (void) fromDoc: (NSDictionary*) doc {
    ...
}

然后,如果我想用那些使用json变体进行字符串编码的方法,我用JSON命名。

我最终意识到,在JavaScript本身中,这并没有出现,因为它只是一个对象。但是对于像PythonObjectiveC这样的语言,当我们在域对象和JSON之间切换时,我们倾向于使用中间文字对象,如字典和列表。我真正需要的是一些意思是“JavaScriptishObjectStructure”或类似的东西。