我有这样的字符串:
jsonArray:
{
d = "[{\"Training_Code\":\"1234 \",\"Training_Duration\":\"2hrs \",\"Training_Startdate\":\"14/02/2013 15:00:00\",\"Training_Enddate\":\"14/02/2013 17:00:00\",\"Trainer_ID\":1,\"Training_Location\":\"B-Wing Training room-4\",\"Comments\":\"C# training\",\"Keyword\":\"C#1234\",\"NumberofDays\":1},{\"Training_Code\":\"4321 \",\"Training_Duration\":\"16 \",\"Training_Startdate\":\"17/02/2013 10:30:00\",\"Training_Enddate\":\"17/02/2013 17:30:00\",\"Trainer_ID\":2,\"Training_Location\":\"A-Wing Training Room-6\",\"Comments\":\"Objective-C\",\"Keyword\":\"Obj-C4321\",\"NumberofDays\":2}]";
}
我想获取两个方括号(包括方括号)之间的数据,然后删除所有“\”以获取我的最终字符串:
[
{
"Training_Code": "1234",
"Training_Duration": "2hrs",
"Training_Startdate": "14/02/201315: 00: 00",
"Training_Enddate": "14/02/201317: 00: 00",
"Trainer_ID": 1,
"Training_Location": "B-WingTrainingroom-4",
"Comments": "C#training",
"Keyword": "C#1234",
"NumberofDays": 1
},
{
"Training_Code": "4321",
"Training_Duration": "16",
"Training_Startdate": "17/02/201310: 30: 00",
"Training_Enddate": "17/02/201317: 30: 00",
"Trainer_ID": 2,
"Training_Location": "A-WingTrainingRoom-6",
"Comments": "Objective-C",
"Keyword": "Obj-C4321",
"NumberofDays": 2
}
]
我怎么能在objective-c中这样做?感谢。
答案 0 :(得分:4)
尝试使用JSONKit
(ref)或NSJSONSerialization
(ref),他们会提供NSArray
或NSDictionary
,具体取决于JSON字符串的结构。
<强>更新强>:
d
看起来像一个格式良好的JSON字符串,但它来自哪里?它是char[]
(如上面的文章中所述),NSString
还是控制台输出?
从这里看,您的第一个代码清单是打印到控制台的内容。将JSON字符串打印到控制台通常会打印转义字符(\
)。在您的其他帖子中,您假设每个响应都可以解析为数组。首先将返回的对象存储到id
中,然后检查其类:
id rawData = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers|NSJSONReadingAllowFragments error:&jsonParsingError
if ( jsonParsingError != nil ) {
// investigate the parsing error
}
else if ( [rawData isKindOfClass[NSDictionary class]] ) {
NSDictionary *dict = rawData;
// process dictionary
}
else if ( [rawData isKindOfClass[NSArray class]] ) {
NSArray *array = rawData;
// process array
}
else {
// some thing went completely wrong
}
您也没有表明您正在检查任何可能的错误。检查jsonParsingError
可能会提供有关正在发生的事情的线索。
答案 1 :(得分:2)
dataUsingEncoding
获取nsdata实例。NSJSONSerialization
您想要的字符串与您提供的字符串相同。
答案 2 :(得分:0)
由于d是一个字符串:
要删除“\”,您可以这样:
NSString *newString = [myString stringByReplacingOccurrencesOfString:@"\" withString:@""];
由于方括号位于前端和末尾,您可以这样做:
[newString removeObjectAtIndex:0];
[newString removeObjectAtIndex:[newString count]-1];
第一步是根据你的情况获取该字符串,并用你的字符串替换myString。
答案 3 :(得分:0)
仅当源字符串包含一个[和],然后......