iPhone JSON框架不解析JSON字符串对象不在对象或数组中
我正在使用Obj-C(iOS)中的JSON框架解析来自restfulwebservice(C#/.NET)的响应 对于数组或对象,框架很好,但其中一个服务调用返回字符串: 原始值(服务器上的内存中):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框架都可以处理这个问题。服务器有时还会
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