1. - (void)signWithParamter:(NSDictionary *)parameters{
    2. NSDictionary *toSignDic = [parameters valueForKey:@"parameter"];
    3. NSMutableDictionary *signedParameters = [JDAdWallSDKParameter operateWithParameter:toSignDic];
    4. NSError *error;
    5. NSData *jsonData = [NSJSONSerialization dataWithJSONObject:signedParameters options:NSJSONWritingPrettyPrinted error:&error];
    6. if (!error) {
    7. NSString *jsonString = [[NSString alloc]initWithData:jsonData encoding:NSUTF8StringEncoding];
    8. if (jsonString) {
    9. [self jsWithFunctionName:@"signBlock" functionParameterJsonString:jsonString completionHandler:^(id _Nullable obj, NSError * _Nullable error) {
    10. }];
    11. }
    12. }
    13. }

    image.png
    需要注意的是:当options为NSJSONWritingPrettyPrinted和kNilOptions时,生成的json字符串是不一样的,从表面看kNilOptions没有换行,当有换行时会报以上截图中的错误

    1. NSData *jsonData = [NSJSONSerialization dataWithJSONObject:signedParameters options:NSJSONWritingPrettyPrinted error:&error];
    2. 调用JS
    3. signBlock('{
    4. "sign" : "c80f40baf89e8d130cf872612d6f4b99",
    5. "time" : "1616493692"
    6. }')
    1. NSData *jsonData = [NSJSONSerialization dataWithJSONObject:signedParameters options:kNilOptions error:&error];
    2. 调用JS
    3. signBlock('{"sign":"9d937fa2fe74116a7dae366fe960118d","time":"1616494011"}')

    下面看一下options的描述

    1. Setting the NSJSONWritingPrettyPrinted option will generate JSON with whitespace designed to make the output more readable. If that option is not set, the most compact possible JSON will be generated.
    2. 设置NSJSONWritingPrettyPrinted选项将生成带有空格的JSON,该空格旨在使输出更具可读性。 如果未设置该选项,则将生成最紧凑的JSON