解决方案 »

  1.   

    第一个问题:NSKeyedUnarchiver 用于对序列化的对象“解档”,也就是反序列化。显然此处的NSData非序列化后得到对象,所以你在试图对一个非使用NSKeyedArchiver 的NSData对象进行“解档”,就会崩溃,报如上错误。
    如果你此处的[self dataFilePath] 文件中存储的内容是json格式,在使用initWithContentsOfFile: 读取到NSData 数据流中后,可直接尝试使用下面的代码来进行解析,但前提是要保证你存储的是json格式。
    id json = [NSJSONSerialization JSONObjectWithData:newdata options:0 error:nil];所以完整的代码如下,你可以尝试一下
    NSData *data = [[NSMutableData alloc] initWithContentsOfFile:[self dataFilePath]];
    id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
    NSLog(@"json:%@",json);
      

  2.   

    如果是json格式的string,用NSJSONSerialization是没问题的,你这个string看名字应该是XML类型,可以先把XML转成NSDictionary,参考这个:
    http://stackoverflow.com/questions/6354159/how-to-convet-xml-string-to-json-using-iphone-sdk
      

  3.   

    你这个方法和我第二个方法是一样的...得到的json为空
      

  4.   

    我那个是服务器返回的soap信息,得到的信息格式如下:
    <?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><GetThisResponse xmlns="http://tempuri.org/"><GetThisResult>{"Code":"111","Re":"成功","Total":1,"Data":{"date":[{"Guid":".......
    之前我是用正则表达式去掉了所有标签,得到了一个字典格式的nsstring:{"Code":"111","Re":"成功","Total":1,"Data":{"date":[{"Guid":".......
    所以我问有没有方法可以转...
    给我的那个方法我看了 确实是不行的
      

  5.   

    你这个string方便全部给出么,如果正常情况下,应该可以返回对象的:NSString *jsonString = @"{\"Code\":\"111\",\"Re\":\"成功\",\"Total\":1,\"Data\":{\"date\":[{\"Guid\":\"test\"}]}}";
    NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
    NSObject *object = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:nil];
    Printing description of object:
    {
        Code = 111;
        Data =     {
            date =         (
                            {
                    Guid = test;
                }
            );
        };
        Re = "\U6210\U529f";
        Total = 1;
    }
      

  6.   

    格式:{Code:"000",Re:"成功",Total:2, "Data":{"date":[{"Guid":" ","Content":" "}]}}这个我最开始就说了...能够转成nsdata 但是转成json时就会变成nil
      

  7.   

    转成NSData说明不了什么,任何东西都可以转成NSData(转成NSData不代表是有效的json数据),上面那个例子,我是想说用你提供的部分string能够解析成字典,你为什么解析不了呢?我猜是因为完整的字符串里面有不是json的东西
      

  8.   


    成功了 非常感谢
    原因是服务对请求返回了两次
    第一次返回信心不全,故不能转换。顺便问一下,貌似afnetworking可以做soap得发送和接受?
      

  9.   


    成功了 非常感谢
    原因是服务对请求返回了两次
    第一次返回信心不全,故不能转换。顺便问一下,貌似afnetworking可以做soap得发送和接受?
    soap是基于HTTP的,只要是满足soap协议的XML,都是一条soap消息,AFNetworking是http的框架,并不关心body部分是什么内容,所以是可以做的
      

  10.   

    你这个方法和我第二个方法是一样的...得到的json为空如果是合法的json格式,在转换时应该是不会有问题的。除非是你的json格式有问题,还是检查一下吧。
      

  11.   


    成功了 非常感谢
    原因是服务对请求返回了两次
    第一次返回信心不全,故不能转换。顺便问一下,貌似afnetworking可以做soap得发送和接受?
    soap是基于HTTP的,只要是满足soap协议的XML,都是一条soap消息,AFNetworking是http的框架,并不关心body部分是什么内容,所以是可以做的
    那怎么网上没看见有这方面的教程呢  按理说用afnetworking应该更简单啊 但是好像很多人像我这样直接手写请求,并自己解析
      

  12.   


    成功了 非常感谢
    原因是服务对请求返回了两次
    第一次返回信心不全,故不能转换。顺便问一下,貌似afnetworking可以做soap得发送和接受?
    soap是基于HTTP的,只要是满足soap协议的XML,都是一条soap消息,AFNetworking是http的框架,并不关心body部分是什么内容,所以是可以做的
    那怎么网上没看见有这方面的教程呢  按理说用afnetworking应该更简单啊 但是好像很多人像我这样直接手写请求,并自己解析
    因为AFNetworking并没有对soap进行单独的支持,所以就算用AFNetworking的话,也需要自己封装好XML,然后设置为请求体,请求的回调的话,我刚看了下,AFNetworking是支持解析XML文档的,只需要用responseSerialization赋值成指定的类就行了,你可以试试这两个:AFXMLParserResponseSerializer、AFXMLDocumentResponseSerializer
      

  13.   


    成功了 非常感谢
    原因是服务对请求返回了两次
    第一次返回信心不全,故不能转换。顺便问一下,貌似afnetworking可以做soap得发送和接受?
    soap是基于HTTP的,只要是满足soap协议的XML,都是一条soap消息,AFNetworking是http的框架,并不关心body部分是什么内容,所以是可以做的
    那怎么网上没看见有这方面的教程呢  按理说用afnetworking应该更简单啊 但是好像很多人像我这样直接手写请求,并自己解析
    因为AFNetworking并没有对soap进行单独的支持,所以就算用AFNetworking的话,也需要自己封装好XML,然后设置为请求体,请求的回调的话,我刚看了下,AFNetworking是支持解析XML文档的,只需要用responseSerialization赋值成指定的类就行了,你可以试试这两个:AFXMLParserResponseSerializer、AFXMLDocumentResponseSerializer
    好的 非常感谢
      

  14.   

        NSData *data = [STR(你自己的字符串) dataUsingEncoding:NSUTF8StringEncoding];
         NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];    NSString *headName = [dic objectForKey:@"nickname"];
        NSLog(@"headName:%@",headName);