美文网首页
iOS---WebView执行JS方法时传Json串做参数的一个

iOS---WebView执行JS方法时传Json串做参数的一个

作者: 博尔茨杰 | 来源:发表于2020-02-25 12:27 被阅读0次

今天遇到一个奇葩的问题,weiView执行JS代码时,总是没有效果,可是方法名与参数都没有错,代码如下:

[webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"%@('%@');", methodName, paraStr]];,其中字符串paraStr格式如下

{

"serverId" : "108",

"roleId" : "1001",

"roleVip" : "A",

"appUId" : "100702140113",

"roleName" : "洪荒之剑",

"roleLevel" : "A",

"serverName" : "展游服务器"

},一个字符串为啥是这种怪格式呢?请继续往下看。。。

这个paraStr就是一个标准的Json串,实现方法如下:

  • (NSString)getJsonWith:(NSDictionary)dic {

    NSString *json = nil;

    if ([NSJSONSerialization isValidJSONObject:dic]) {

      NSError *error;
    
      NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dic options:NSJSONWritingPrettyPrinted error:&error];
    
      if(!error) {
    
          json =[[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
    
      }
    
      else {
    
          NSLog(@"JSON parse error: %@", error);
    
      }
    

    }

    else {

      NSLog(@"Not a valid JSON object: %@", dic);
    

    }

    return json;

}

之所以json串是那种怪格式,是因为[NSJSONSerialization dataWithJSONObject:dic options:NSJSONWritingPrettyPrinted error:&error];中的options是NSJSONWritingPrettyPrinted的原因,苹果官网资料是这样说的“为了使打印出来的json串格式标准一些,添加了一些空格符号”。

而且我发现之所以js代码不执行,是因为json串格式的问题,后来我将options改为 0,现在再来看一看json串的样子吧:

{"serverId":"108","roleId":"1001","roleVip":"A","appUId":"100702140113","roleName":"洪荒之剑","roleLevel":"A","serverName":"展游服务器"}。 现在,才有一个字符串的样子吗!此时我的js执行效果也看到了,真实坑呀!
————————————————
版权声明:本文为CSDN博主「Happylege」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zhtl3333/article/details/48290267

相关文章

网友评论

      本文标题:iOS---WebView执行JS方法时传Json串做参数的一个

      本文链接:https://www.haomeiwen.com/subject/qjgzqhtx.html