Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在目标C中生成js对象文字_Javascript_Objective C_Json_Literals_Object Literal - Fatal编程技术网

Javascript 在目标C中生成js对象文字

Javascript 在目标C中生成js对象文字,javascript,objective-c,json,literals,object-literal,Javascript,Objective C,Json,Literals,Object Literal,我正试图从objective C生成一些javascript。我有一个简单的objective-C对象:仅NSStrings、NSArrays、NSDictionarys和NSNumbers,我想将其作为对象文本插入javascript。最好的方法是什么 到目前为止,我已经成功地序列化了对象并获得了一个JSON字符串,但是JSON并不完全等同于javascript对象文本。我可以将其作为JSON.parse('%@')调用插入,但这似乎效率低下: (controller.createWindow

我正试图从objective C生成一些javascript。我有一个简单的objective-C对象:仅
NSString
s、
NSArray
s、
NSDictionary
s和
NSNumber
s,我想将其作为对象文本插入javascript。最好的方法是什么

到目前为止,我已经成功地序列化了对象并获得了一个JSON字符串,但是JSON并不完全等同于javascript对象文本。我可以将其作为
JSON.parse('%@')
调用插入,但这似乎效率低下:

(controller.createWindow).apply((controller), JSON.parse('[\"LoggedIn\",3,1,[0,0,480,320],false,false]'))
以下是完整的代码:

//turn an NSObject into an NSString
+ (NSString *)jsonDumps:(id)obj {
    NSError *error;
    NSData *utf8stringified = [NSJSONSerialization dataWithJSONObject:obj options:0 error:&error];
    if (utf8stringified == nil) {
        [NSException raise:@"Failed to jsonify arguments" format:@"Failed to jsonify arguments %@: %@",
         obj, error];
    }

    NSString *stringified = [[[NSString alloc] initWithData:utf8stringified encoding:NSUTF8StringEncoding]
                             autorelease];
    return stringified;
}

//turn a JSON string into a JS literal
+(NSString *)jsonToJSLit:(NSString *)jsonString {
    NSMutableString *s = [NSMutableString stringWithString:jsonString];
    [s replaceOccurrencesOfString:@"\u2028" withString:@"\\u2028" options:NSCaseInsensitiveSearch range:NSMakeRange(0, [s length])];
    [s replaceOccurrencesOfString:@"\u2029" withString:@"\\u2029" options:NSCaseInsensitiveSearch range:NSMakeRange(0, [s length])];
    return [NSString stringWithString:s];
}

//turn an object into a JS string literal
+(NSString *)objToJSLiteral:(id)obj {
    return [self jsonToJSLit:[self jsonDumps:obj]];
}

我原以为JSON和JS文本之间有更多的区别,但显然这只是这两个unicode字符

您是如何生成JSON的?@jsumners:
[NSJSONSerialization dataWithJSONObject:args选项:0错误:&error],然后
[[NSString alloc]initWithData:UTF8stringized encoding:NSUTF8StringEncoding]autorelease]
获取
NSString
,然后转义it@Claudiu:为什么额外的逃逸?NSJSONSerialization(转换为NSString)不是您需要的吗?@MartinR:。哦,虽然我记得我以前经历过这个问题,解决方法就是替换那些字符。。。嗯,是的,还有很多straightforward@MartinR当前位置据我所知。。我记得以前解决过这个问题,我已经使用了与我在下面发布的解决方案相当的python解决方案几个月了,没有遇到任何问题