2014-01-08 7 views
0

Хотя я использую iOS, я не думаю, что это актуально здесь.JSON: Предоставление постоянных значений

Мне нужно иметь возможность использовать константу в двух значениях для JSON. Причина. Мы используем разные серверы для разработки и производства и не можем иметь данные о разработке, смешанные с производственными данными. Во время сборки мы будем предоставлять значения, основанные на настройках среды (разработка/производство).

Таким образом, как я могу использовать постоянное значение для «rsids» и сервер»в поле ниже JSON:

{ 
    "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 
    } 

UPDATE

Существует нет словаря. Я использую IOS SDK с помощью Adobe для сайта Catalyst. Они имеют файл в формате JSON, что я должен редактировать и ProVi значения RSID и сервера. JSON, который вы видите в вопросе, - это весь файл.

В SDK также есть файл библиотеки (.a). Вот документы: http://microsite.omniture.com/t2/help/en_US/mobile/ios/index.html#ADBMobile_Class_and_Method_Reference

+0

Что вы пытаетесь сделать? Вы пытаетесь _send_ постоянное значение в JSON или использовать постоянное значение _received_ в JSON во время выполнения? – memmons

+0

отправить постоянное значение в JSON. – user1107173

+0

В принципе, значение константы будет меняться во время сборки. – user1107173

ответ

0

Если вам необходимо изменить значение константы во время сборки вы должны использовать # если/# IFDEF и друзей, чтобы сделать это.

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

Это именно то, что мы делаем; однако, я не могу понять, как получить JSON-файл (помещенный в вопрос), чтобы узнать константы. – user1107173

+0

@ user1107173, как вы создаете словарь, который вы сериализуете? – CaptJak

+0

Нет словаря. Я использую SDK для iOS от Adobe для 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 – user1107173

0

Тогда вам нужно будет создать несколько файлов. У вас не может быть динамический JSON-файл.

При создании файлов из кода вы можете использовать константы. В верхней части вашего файла .m перед частью @implementation определите их на нескольких строках. Один для разработки, один для QA и один для производства. Прокомментируйте два, которые вы не хотите, и оставьте тот, который вам нужен. При использовании этого формата используйте формат.

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

Часто бывает неплохо иметь фиктивный логин, который может безопасно общаться с вашими серверами. Такой логин будет иметь пример набора данных для чтения, и любые загрузки будут проигнорированы. Это удобно для тестирования между различными средами, включая производство, и позволяет всем приложениям, представленным в App Store, полностью протестировать с действующим логином.

Смежные вопросы