我们的项目应该重用现有的适配器,这些适配器期望JSON对象作为适配器过程的输入参数。
当我们尝试使用
调用适配器时WLProcedureInvocationData *myInvocationData = [[WLProcedureInvocationData alloc] initWithAdapterName:@"UserProfileAdapter" procedureName:@"getUserProfile"];
myInvocationData.parameters = [NSArray arrayWithObjects:@"{"userEmail" : "xxx@xxx.com"}", nil];
则传递给Adapter过程的输入对象不是Javascript对象,而是Javascript字符串。
为了用它生成一个对象,我们总是需要使用
将输入从字符串解析为对象:input = JSON.parse(input);
因为我们是在混合应用中重用生产中的现有代码,所以这不是一个选项,因为在混合应用中这很好。
我们如何将JSON传递给Javascript适配器,以便适配器自动创建输入对象而不是字符串?
我们找到的答案是Swift和Android…没有再尝试ObjC。
iOS://Create JSON Object with keys and values
let jsonObject: [String: AnyObject] = [
"userName": "xxx@xxx.com",
"password": "12345"
]
let procedureData = WLProcedureInvocationData(adapterName: "AuthAdapter", procedureName: "login")
procedureData.parameters = [jsonObject]
Android: JSONObject jsonObj = new JSONObject(""userName":"xxx@xx.com","password":"1234"}");
Object[] params = new Object[]{jsonObj};
WLProcedureInvocationData invocationData = new WLProcedureInvocationData("AuthAdapter", "login");
invocationData.setParameters(params);
我们还没有尝试过更深层次的JSON结构,这可能仍然很麻烦,但对于一个基本的JSON,这对我们来说现在很好。