【发布时间】:2014-01-27 00:06:47
【问题描述】:
虽然我使用的是 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 用于 Site Catalyst。他们有一个 JSON 文件,我必须对其进行编辑并提供 RSID 和服务器值。您在问题中看到的 JSON 是整个文件。
SDK 也有一个库文件 (.a)。以下是文档:http://microsite.omniture.com/t2/help/en_US/mobile/ios/index.html#ADBMobile_Class_and_Method_Reference
【问题讨论】:
-
你想做什么?您是尝试在 JSON 中发送一个常量值还是在运行时在 JSON 中使用一个常量值received?
-
在 JSON 中发送一个常量值。
-
如果你想要不同的值,你必须创建多个文件。您不能让 JSON 文件像您正在寻找的那样是动态的。
-
读取 JSON 文件并对其进行反序列化后,执行
[jsonDict setValue:theConstant forKeyPath:@"analytics.rsids"];和[jsonDict setValue:theOtherConstant forKeyPath:@"audienceManager.server"];。 (确保在JSONObjectWithData调用中使用NSJSONReadingMutableContainers选项。) -
当然,另一种方法是使用
"$$PLACEHOLDER1$$"之类的内容代替需要更改的值,然后对 JSON 文件中的内容进行简单的文本替换,使用类似sed。
标签: ios objective-c json