在objective-C中解析格式不良的JSON

在objective-C中解析格式不良的JSON,objective-c,json,parsing,nsdictionary,Objective C,Json,Parsing,Nsdictionary,我的任务是解析一些JSON,这些JSON是通过在XMLWADL上运行XML到JSON转换工具创建的。我能够将响应中返回的数据解析为JSON,并且能够从数据中获取顶级NSDictionary。我可以从字典中得到一个数组,从数组中得到一个NSDictionary(它包括键值,但仅此而已),这是我能做的最深的。我以前做过解析,但是这种JSON格式我运气不好?这是我正在使用的代码 // Decode the data NSError *parseError = nil; NSData *jsonData

我的任务是解析一些JSON,这些JSON是通过在XMLWADL上运行XML到JSON转换工具创建的。我能够将响应中返回的数据解析为JSON,并且能够从数据中获取顶级NSDictionary。我可以从字典中得到一个数组,从数组中得到一个NSDictionary(它包括键值,但仅此而已),这是我能做的最深的。我以前做过解析,但是这种JSON格式我运气不好?这是我正在使用的代码

// Decode the data
NSError *parseError = nil;
NSData *jsonData = [request responseData];
NSDictionary *responseDict = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:&parseError];
if (parseError) {
    NSLog(@"Error: %@", [parseError localizedDescription]);

    // other stuff..
    return;
}

NSLog(@"JSON=: %@", responseDict.description);
NSArray *messageBoxResponse = [responseDict objectForKey:@"messageBoxResponse"];
NSLog(@"messageBoxResponse=: %@", messageBoxResponse);
NSUInteger count = messageBoxResponse.count;
for (NSDictionary* messages in messageBoxResponse) {

    NSLog(@"Messages=: %@", messages.description);
    NSArray *message = [messages objectForKey:@"message"];

    // get SIGABRT
    count = message.count;

    // If I comment out above line and introduce this I get SIGABRT also
    for (NSDictionary* something in message) {
        NSLog(@"Somthing=: %@", something.description);


}
这是我试图解析的JSON。。IP已更改:):

{
messageBoxResponse={
消息={
链接={
href=”http://1.1.1.1:80/services/messageboxes/63358/messages";
rel=自我;
};
消息=(
{
标志={
回答=0;
链接={
href=”http://1.1.1.1:80/services/messageboxes/63358/messages//flags";
rel=自我;
};
taggedForDeletion=0;
未读=0;
};
来自苏伦。1@sc-msg1 msg.sc.sc”;
链接={
href=”http://1.1.1.1:80/services/messageboxes/63358/messages/";
rel=自我;
};
零件={
链接={
href=”http://1.1.1.1:80/services/messageboxes/63358/messages//parts";
rel=自我;
};
部分={
链接={
href=”http://1.1.1.1:80/services/messageboxes/63358/messages//parts/0";
rel=自我;
};
mimeType=“TEXT/PLAIN”;
name=“text.txt”;
尺寸=564;
};
};
接收日期=1328624061000;
sentDate=1328624035000;
主题=测试;
},
{
标志={
回答=0;
链接={
href=”http://1.1.1.1:80/services/messageboxes/63358/messages//flags";
rel=自我;
};
taggedForDeletion=0;
未读=0;
};
来自苏伦。1@sc-msg1 msg.sc.sc”;
链接={
href=”http://1.1.1.1:80/services/messageboxes/63358/messages/";
rel=自我;
};
零件={
链接={
href=”http://1.1.1.1:80/services/messageboxes/63358/messages//parts";
rel=自我;
};
部分=(
{
链接={
href=”http://1.1.1.1:80/services/messageboxes/63358/messages//parts/0";
rel=自我;
};
mimeType=“TEXT/PLAIN”;
name=“text.txt”;
尺寸=6;
},
{
内容={
href=”http://1.1.1.1:80/services/messageboxes/63358/messages//parts/1/2c3a3400620f218d5378607260dc2749.wav";
rel=内容;
};
持续时间=3;
链接={
href=”http://1.1.1.1:80/services/messageboxes/63358/messages//parts/1";
rel=自我;
};
mimeType=“音频/WAV”;
name=“音频录制\u S000551\u 002.wav”;
尺寸=31190;
},
{
链接={
href=”http://1.1.1.1:80/services/messageboxes/63358/messages//parts/2";
rel=自我;
};
mimeType=“应用程序/MS-TNEF”;
name=“winmail.dat”;
尺寸=656;
}
);
};
接收日期=1328562604000;
sentDate=132856259600;
主题=“来自Suren 1的语音信息(63357)”;
}
);
};
};

}

这是因为json无效。它应该更像这样:

{
    "messages": {
        "link": {
            "href": "http: //1.1.1.1: 80/services/messageboxes/63358/messages",
            "rel": "self"
        }
    }
}

“=”必须是“:”有些分号不应该在那里。

我认为您应该先验证您是否正在尝试解析有效的JSON!签出或其他验证器以首先检查您的输入。接下来,如果您使用的是iOS 5,您可以使用
NSJSONSerialization
,否则您可以使用另一个库来完成所有繁重的工作。感谢您的回复。您是正确的,格式无效。我尝试使用两个restful客户端发出相同的请求“SOAPUI”和“WizTools”,在这两种情况下,我都会收到有效的XML。然而,在编程上,使用NSJSO
{
    "messages": {
        "link": {
            "href": "http: //1.1.1.1: 80/services/messageboxes/63358/messages",
            "rel": "self"
        }
    }
}