2015-07-31 3 views
1

Наш проект должен повторно использовать существующие адаптеры, которые ожидают объекты JSON в качестве входных параметров в процедурах адаптера.WL 6.1.0.02 - Как передать объект JSON из родного iOS и родного Android в HTTP Javascript Adapter

Когда мы пытаемся вызвать адаптер с помощью:

WLProcedureInvocationData *myInvocationData = [[WLProcedureInvocationData alloc] initWithAdapterName:@"UserProfileAdapter" procedureName:@"getUserProfile"]; 

myInvocationData.parameters = [NSArray arrayWithObjects:@"{\"userEmail\" : \"[email protected]\"}", nil]; 

затем входной объект, который передается процедура адаптера не является объект Javascript, но яваскрипт строки.

Для того, чтобы сделать объект из этого, мы всегда должны разобрать вход из строки в объект с помощью:

input = JSON.parse(input); 

, поскольку мы повторно использовать существующий код, который находится в производстве с гибридным приложение, это не вариант, так как приложение hyrbid работает отлично.

Как передать JSON в адаптер Javascript, чтобы адаптер автоматически создавал входной объект, а не строку?

ответ

1

Ответ, который мы нашли, был для Swift и для Android ... больше не пытался ObjC.

IOS:

//Create JSON Object with keys and values 
let jsonObject: [String: AnyObject] = [ 
       "userName": "[email protected]", 
       "password": "12345" 
      ] 

let procedureData = WLProcedureInvocationData(adapterName: "AuthAdapter", procedureName: "login") 
procedureData.parameters = [jsonObject] 

Android:

JSONObject jsonObj = new JSONObject("\"userName\":\"[email protected]\",\"password\":\"1234\"}"); 
Object[] params = new Object[]{jsonObj}; 

WLProcedureInvocationData invocationData = new WLProcedureInvocationData("AuthAdapter", "login"); 
invocationData.setParameters(params); 

Мы не пытались что-либо с более глубокими вложенными JSON структур еще и это все еще может быть трудным, но для базового JSON это прекрасно работает для нас Теперь.