Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/38.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
iPhone JSON框架不解析JSON字符串对象不在对象或数组中_Iphone_Ios_Json_Json Framework - Fatal编程技术网

iPhone JSON框架不解析JSON字符串对象不在对象或数组中

iPhone JSON框架不解析JSON字符串对象不在对象或数组中,iphone,ios,json,json-framework,Iphone,Ios,Json,Json Framework,我正在使用Obj-C(iOS)中的JSON框架解析来自restfulwebservice(C#/.NET)的响应 对于数组或对象,框架很好,但其中一个服务调用返回字符串: 原始值(服务器上的内存中): 41SIdX1GRoyw1174duOrewErZpn/WatH WCF编码后http响应中的JSON值: “41SIdX1GRoyw1174duOrewErZpn\/WatH” Android、WindowsPhone7,当然还有jQuery上的对应JSON框架都可以处理这个问题。服务器有时还会

我正在使用Obj-C(iOS)中的JSON框架解析来自restfulwebservice(C#/.NET)的响应

对于数组或对象,框架很好,但其中一个服务调用返回字符串:

原始值(服务器上的内存中):
41SIdX1GRoyw1174duOrewErZpn/WatH

WCF编码后http响应中的JSON值:
“41SIdX1GRoyw1174duOrewErZpn\/WatH”

Android、WindowsPhone7,当然还有jQuery上的对应JSON框架都可以处理这个问题。服务器有时还会返回.NET WebFaultException,它会自动将错误消息序列化为
“error message here”

JSON框架返回时出现错误:
Token'string'不应出现在最外层的数组或对象之前

有人知道如何在Objective C中解码javascript字符串吗

谢谢
Kris

我想你是说你使用的JSON框架不能将值作为JSON字符串中最外层的实体来处理——它需要一个对象或数组。如果是这种情况,那么测试第一个非空白字符的“[”或“{”将是一件简单的事情,如果不是其中之一,则假定它是一个值

更简单的是,在将输入字符串馈送给JSON解析器之前,您可以始终将其封装在“['']”中,然后在观察数据之前“丢弃”外部的一个元素数组。这使JSON解析器能够处理对任何值格式的解析

-(NSString*)handleResponseAsString:(NSString*)data{
if(data==nil || [data length] == 0) return nil;
NSString* retVal = nil;
SBJsonParser* parser = [[SBJsonParser alloc] init];
NSArray* items = [parser objectWithString:[NSString stringWithFormat:@"[%@]", data]]; // enclose in [] so that the parser thinks it's an array
if([parser error] == nil)
{
    if([items count] > 0) retVal = (NSString*) [items objectAtIndex:0];
    else NSLog(@"handleResponseAsString parser error: the array had zero elements");
}else{
    NSLog(@"handleResponseAsString error: '%@' could not be decoded due to error: %@", data, [parser error]);
}
[parser release];
return retVal;

}

您好,在前者上,问题在于值是JSON格式的(即带有转义字符),因此我可以通过这种方式获得值,但仍然存在解码问题,这是由您的第二点处理的-有点粗糙-但它会工作!奇怪的是,框架无法处理这种情况,因为它显然具有处理javascript转义字符串的能力。谢谢,k