虽然我使用的是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
答案 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的任何应用程序进行全面测试。