在JavaScript中使用JSON.parse(parameter-value)
时,适配器调用工作正常,但是当在本机iOS应用程序中执行类似操作时,它会因以下错误而失败。
Javascript适配器调用:
var invocationData = {
adapter : 'TEST_ADAP',
procedure : 'PROC1',
parameters : [JSON.parse(A)],
};
原生呼叫:
json= // some json value will be come
MyConnect *connectListener = [[MyConnect alloc] initWithController:self];
[[WLClient sharedInstance] wlConnectWithDelegate:connectListener];
WLProcedureInvocationData *myInvocationData = [[WLProcedureInvocationData alloc] initWithAdapterName:@"TEST" procedureName:@"test"];
myInvocationData.parameters = [NSArray arrayWithObjects:json, nil];
for (NSString *str in myInvocationData.parameters) {
NSLog(@"values of account test %@",str);
}
PasswardPage *invokeListener = [[PasswardPage alloc] initWithController:self];
[[WLClient sharedInstance] invokeProcedure:myInvocationData withDelegate:invokeListener];
答案 0 :(得分:1)
你的行
myInvocationData.parameters = [NSArray arrayWithObjects:json, nil];
几乎是正确的。
parameters
属性应该是NSArray
(就像你做的那样),但数组必须由字符串值组成 - 不是JSON对象。
myInvocationData.parameters = [NSArray arrayWithObjects:@"myValue1", @"myValue2", @"myValue3", nil];
如果您收到的数据不是这种格式,则需要先将其转换为此格式。这超出了这个问题的范围。
如果您不确定如何将现有格式转换为有效NSArray
,请打开一个新问题(标记为Objective-C,而非工作灯)。
答案 1 :(得分:0)
我们可以在iOS Native代码中将JSON作为NSString传递给调用适配器 实施例
//Created Dictionary
NSMutablec *dict = [[NSMutableDictionary alloc]init];
[dict setObject:@"xyz" forKey:@"Name"];
[dict setObject:@"iOS" forKey:@"Platform"];
//Convert it to JSON Data
NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dict
options:nil
error:&error];
//JSON Data To NSString
NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
WLProcedureInvocationData * invocationData = [[WLProcedureInvocationData alloc] initWithAdapterName:@"XYZAdapter" procedureName:@"FunctionXYZ"];
//Passing jsonString (NSString Created out of JSON Data) as array to set Parameters.
[invocationData setParameters:[NSArray arrayWithObject:jsonString]];
[[WLClient sharedInstance] invokeProcedure:invocationData withDelegate:self];