JSON:提供常量值

时间:2014-01-08 18:08:01

标签: ios objective-c json

虽然我使用的是iOS,但我认为这并不重要。

我需要能够在JSON的两个值中使用常量。原因:我们使用不同的服务器进行开发和生产,并且不能将开发数据与生产数据混合在一起。在构建时,我们将根据环境设置(开发/生产)提供值。

因此,如何在下面的JSON中为“rsids”和“server”使用常量值:

{
    "version" : "1.0",
    "analytics" : {
        "rsids" : "//I would like to put a Constant Here",
        "server" : "",
        "charset" : "UTF-8",
        "ssl" : false,
        "offlineEnabled" : true,
        "lifecycleTimeout" : 300,
        "privacyDefault" : "optedin",
        "poi" : []
    },
    "target" : {
        "clientCode" : "",
        "timeout" : 5
    },
    "audienceManager" : {
        "server" : "//I would like to put a Constant Here"
    }
}

我希望能够做到这样的事情:

NSStirng const *kServerURL = @"www.google.com"

"audienceManager" : {
        "server" : kServerUrl
    }

更新

没有字典。我正在使用Adobe的iOS SDK for Site Catalyst。他们有一个JSON文件,我必须编辑并提供RSID和Server值。您在问题中看到的JSON是整个文件。

SDK还有一个库文件(.a)。以下是文档:http://microsite.omniture.com/t2/help/en_US/mobile/ios/index.html#ADBMobile_Class_and_Method_Reference

2 个答案:

答案 0 :(得分:0)

如果你需要在构建时更改常量的值,你应该使用#if / #ifdef和朋友这样做。

#ifdef DEBUG
NSString const *kServerURL = @"www.google.com"
#else
NSString const *kServerURL = @"www.bing.com"
#endif

答案 1 :(得分:0)

然后你必须创建多个文件。你不能让JSON文件变得动态。

从代码创建文件时,可以使用常量。在@implementation部分之前的.m文件的顶部,在多行上定义它们。一个用于开发,一个用于QA,一个用于生产。注释掉你不想要的两个并留下你想要的那个。使用时,请使用格式。

"server":[NSString stringWithFormat:@"\"%@\"",kServerUrl];

拥有可以安全地与服务器通信的虚拟登录通常是个好主意。这样的登录将具有要读取的示例数据集,并且将忽略任何上载。这对于在不同环境(包括生产)之间进行测试非常方便,并允许使用有效登录对提交到App Store的任何应用程序进行全面测试。