0

我正在使用 .json 文件来保存应用程序的字体/文本信息。现在我添加了不同的语言,我需要能够为某些字体指定不同的大小,因为该语言中单词的大小不同,例如德语单词往往比英语长,所以我可能想要更小的字体。

我的问题是我的 .json 文件中会有大量重复数据,因为每种语言的大多数字体都将保持不变。这是我想以某种方式减少的重复数据的示例,我只是不知道如何格式化我的 .json 文件来这样做(请注意,我已经删除了很多细节,这样会更容易阅读):

"styles":
{
    "en":
    {
        "main_title" :
        {
            "font" : "font://verdana-bold.ttf",
    "size" : 25,
        },
        "heading" :
        {
            "font" : "font://verdana-bold.ttf",
    "size" : 18,
        },
    },
    "de":
    {
        "main_title" :
        {
            "font" : "font://verdana-bold.ttf",
    "size" : 25,
        },
        "heading" :
        {
            "font" : "font://verdana-bold.ttf",
    "size" : 16,
        },
    },
    "fr":
    {
        "main_title" :
        {
            "font" : "font://verdana-bold.ttf",
    "size" : 25,
        },
        "heading" :
        {
            "font" : "font://verdana-bold.ttf",
    "size" : 18,
        },
    }
}

请注意,在上面的示例中,我使用了三种语言,并且所有语言都使用相同的字体信息,除了 deutsche 使用较小的“标题”字体。我想做的是这样的:

"styles":
{
    "en", "de", "fr":
    {
        "main_title" :
        {
            "font" : "font://verdana-bold.ttf",
    "size" : 25,
        },
        "heading" :
        {
            "font" : "font://verdana-bold.ttf",
    "size" : 18,
        },
    },
    "de":
    {

        "heading" :
        {
            "font" : "font://verdana-bold.ttf",
    "size" : 16,
        },
    },
}

在此示例中,我让所有三种语言都使用相同的信息,但能够在德意志语言字体中定义一个更改。显然,我的第二个示例无法正确阅读,因为它的语法不正确,但希望这能理解我想要实现的目标。JSON中是否有任何语法可以让我做这样的事情?

4

1 回答 1

1

我不相信 JSON 会这样做,但是您可以拥有一个“默认”对象,该数据的消费者可以查看其他语言对象中缺少的任何值:

"styles": {
    "default": {
        "main_title" : {
            "font" : "font://verdana-bold.ttf",
            "size" : 25,
        },
        "heading" : {
            "font" : "font://verdana-bold.ttf",
            "size" : 18,
        },
    },
    "de": {
        "heading" : {
            "size" : 16,
        }
    }
}

如果您需要指定允许的语言,只需将其添加为对象的另一个属性:

"styles": {
    "languages": ["en", "de", "fr"],
    ...
}
于 2012-05-18T23:33:33.570 回答