首页
学习
活动
专区
圈层
工具
发布

Json组织
EN

Stack Overflow用户
提问于 2014-03-04 20:36:12
回答 2查看 188关注 0票数 0

我在我的一个项目中使用JSON。例如,我有JSON结构。

代码语言:javascript
复制
{
    "address":{
        "streetAddress": {
                  "aptnumber" : "21",
                  "building_number" : "2nd", 
                  "street" : "Wall Street",
            },
        "city":"New York"
    },
    "phoneNumber":
    [
        {
            "type":"home",
            "number":"212 555-1234"
        }
    ]
}

现在我有了一堆使用这种结构的模块,它希望在接收到的json中看到某些字段。对于上面的例子,我有两个文件: address_manager和phone_number_manager。每一次都将传递相关信息。因此,address_manager将期待一个具有'streetAddress‘和'city’键的dict。

我的问题是:是否可以设置一个常量结构,以便每当我在JSON结构中更改字段的名称(例如,我想将'streetAddress‘更改为'address')时,就不必在多个地方进行更改?

我天真的做法是有一堆常量(例如ADDRESS = "address" ADDRESS_STREET_ADDRESS = "streetAddress" ..etc..。)因此,如果我想在JSON结构中更改我的一个字段的名称,我只需在一个地方进行更改。然而,这似乎是非常低效的,因为一旦我到达JSON结构的第三层或第四层(例如ADDRESS_STREETADDRESS_APTNUMBER、ADDRESS_STREETADDRESS_BUILDINGNUMBER),我的常量命名就会非常长。

我是在python中这样做的,但是任何一般的答案都可以。谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-04 20:54:38

正如Cameron在评论中所建议的那样,您的常量名称不包括所有级别的JSON结构。如果您在多个地方拥有相同的数据,那么重用相同的常量实际上会更好。例如,假设您的JSON的地址中包含了一个电话号码:

代码语言:javascript
复制
{
    "address": {
        "streetAddress": {
            "aptnumber" : "21",
            "building_number" : "2nd", 
            "street" : "Wall Street"
        },
        "city":"New York",
        "phoneNumber":
        [
            {
                "type":"home",
                "number":"212 555-1234"
            }
        ]
    },
    "phoneNumber":
    [
        {
            "type":"home",
            "number":"212 555-1234"
        }
    ]
}

为什么不在两个地方都使用一个常量PHONES = 'phoneNumber'呢?您的常量将有较短的名称,并且在逻辑上更加一致。您最终会像这样使用它(假设JSON存储在person中):

代码语言:javascript
复制
person[ADDRESS][PHONES][x] # Phone numbers associated with that address
person[PHONES][x] # Phone numbers associated with the person

而不是

代码语言:javascript
复制
person[ADDRESS][ADDRESS_PHONES][x]
person[PHONE_NUMBERS][x]
票数 1
EN

Stack Overflow用户

发布于 2014-03-04 20:47:58

您可以编写脚本,而不是在更改常量时,更改所有json文件中的结构。

示例:

代码语言:javascript
复制
import json
CHANGE = ('steet', 'streetAddress')
json_data = None
with open('file.json') as jfile:
    json_data = jfile.load(jfile)
    json_data[CHANGE[1]], json_data[CHANGE[0]] = json_data[CHANGE[0]], None
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22182465

复制
相关文章

相似问题

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