【转】H5收不到iOS传递的JSON的解决方案
时间:2020-05-22
本文章向大家介绍【转】H5收不到iOS传递的JSON的解决方案,主要包括【转】H5收不到iOS传递的JSON的解决方案使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
经过分析失败的原因是
- 因为JSON字符串带空格换行符,空格缘故
/**
* JSON字符串转NSDictionary
*
* @param jsonString JSON字符串
*
* @return NSDictionary
*/
+ (NSDictionary *)dictionaryWithJsonString:(NSString *)jsonString {
if (jsonString == nil) {
return nil;
}
NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
NSError *error;
NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&error];
if(error) {
NSLog(@"json解析失败:%@",error);
return nil;
}
return dic;
}
/**
* 字典转JSON字符串
*
* @param dic 字典
*
* @return JSON字符串
*/
+ (NSString*) dictionaryToJson:(NSDictionary *)dic{
NSError *parseError = nil;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dic options:NSJSONWritingPrettyPrinted error:&parseError];
NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
NSMutableString *mutStr = [NSMutableString stringWithString:jsonString];
NSRange range = {0,jsonString.length};
//去掉字符串中的空格
[mutStr replaceOccurrencesOfString:@" " withString:@"" options:NSLiteralSearch range:range];
NSRange range2 = {0,mutStr.length};
//* 去掉字符串中的换行符 否则H5收不到
[mutStr replaceOccurrencesOfString:@"\n" withString:@"" options:NSLiteralSearch range:range2];
return mutStr;
}
复制代码
题外话
-
iOS11之后生成的jSON默认去掉空格和换行符
- option
NSJSONWritingSortedKeys
- option
if (@available(iOS 11.0, *))
{
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:object
options:NSJSONWritingSortedKeys // Pass 0 if you don't care about the readability of the generated string
error:&error];
}
复制代码
- iOS11之前生成的jSON默认带空格和换行符
需要手动去掉
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:object
options:NSJSONWritingPrettyPrinted // Pass 0 if you don't care about the readability of the generated string
error:&error];
复制代码
- 去掉空格和换行符
NSMutableString *mutStr = [NSMutableString stringWithString:jsonString];
NSRange range = {0,jsonString.length};
//去掉字符串中的空格
[mutStr replaceOccurrencesOfString:@" " withString:@"" options:NSLiteralSearch range:range];
NSRange range2 = {0,mutStr.length};
//去掉字符串中的换行符
[mutStr replaceOccurrencesOfString:@"\n" withString:@"" options:NSLiteralSearch range:range2];
复制代码
移动端传给html 的json
- (void)executeJsString:(NSString *)jsString JsonString:(NSString *)jsonString {
jsString = [NSString stringWithFormat:@"%@(%@)", jsString, jsonString];//不要加 ' '
[self.webView stringByEvaluatingJavaScriptFromString:jsString];
}
转自:https://juejin.im/post/5ab71b306fb9a028d7009007
来源:掘金
原文地址:https://www.cnblogs.com/linganxiong/p/12938407.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法