我的Json回复:
{
"xxx": {
"y": {
"id": 1,
"name": "z"
},
"startday": "2016-01-10",
"status": "New",
"total": 1,
"a": [
{
"id": 766,
"b": {
"id": 3,
"name": "c"
},
"d": {
"id": 4
},
"e": {
"id": 1,
"name": "f"
},
"g": {
"id": 8,
"name": "h"
},
"hours": 1,
"comments": "",
"spent_on": "2016-01-10"
}
]
}
}
从这里我创建了一个这样的字符串:
NSString * str = @"{\"xxx\":{\"y\":{\"id\":1,\"name\":\"z\"},\"startday\":\"2016-01-10\",\"status\":\"New\",\"total\":1.0,\"a\":[{\"id\":766,\"b\":{\"id\\":3,\\"name\\":\\"c\\"},\\"d\\":{\\"id\\":4},\\"e\\":{\\"id\\":1,\\"name\\":\\"f\\"},\\"g\\":{\\"id\\":8,\\"name\\":\\"h\\"},\\"hours\\":1.0,\\"comments\\":\\"\\",\\"spent_on\\":\\"2016-01-10\\"}]}}";
然后我通过以下代码发布此值:
NSData *objectData = [str dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *jsonData = [NSJSONSerialization JSONObjectWithData:objectData options:NSJSONReadingMutableContainers error:&jsonError];
if (jsonError == NULL)
{
msgView =@"error msg null";
NSURL *url = [NSURL URLWithString:@"xxx"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url
cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];
NSData *requestData = [jsonStr dataUsingEncoding:NSUTF8StringEncoding];
[request setHTTPMethod:@"POST"];
[request setHTTPBody: requestData];
}
它命中服务器并获得响应。同样,我得到用户进入app的所有值。我创建带连接的NSstring。
NSString* concate = [NSString stringWithFormat:@"%@%@%@%@,%@%@%@,%@,%@%@,%@%,%@,%@,%@%@%@%@%@%@,%@%@,%@%@,%@%@",xx,....];
所以我在连接后得到这样的输出响应:
{\"x\":{\"y\":{\"id\":1,
\"name\":\"a\"
},
\"startday\":\"2016-01-10\"
,
\"status\":\"New\"
,{\"total\":1,\"time_entries\":[{\"id\":766,
\"b\":{
\"id\":8,
\"name\":\"c\"
}
,
\"u\":{
\"id\":22
}
,\"d\":{\"id\":1
\"name\":\"e\"
},
\"l\":{
\"id\":8,
\"name\":\"g\"
}
,\"hours\":1,\"comments\":\"\",\"spent_on\":\"2016-01-12\"}]}}
因此,如果通过这个,它会抛出错误。我必须连接或组合不同的字符串与其他方法。或者有任何可能将字符串转换为json响应格式。或者其他任何其他简单的方法来执行此任务。请向我提出想法。
答案 0 :(得分:4)
首先,您需要通过执行以下操作将NSString
转换为NSData
NSData *data = [concate dataUsingEncoding:NSUTF8StringEncoding];
然后只需使用JSONObjectWithData:
的{{1}}方法将其转换为JSON
NSJSONSerialization
答案 1 :(得分:0)
首先,您需要将NSString
转换为NSData
NSString * str = @"{\"xxx\":{\"y\":{\"id\":1,\"name\":\"z\"},\"startday\":\"2016-01-10\",\"status\":\"New\",\"total\":1.0,\"a\":[{\"id\":766,\"b\":{\"id\\":3,\\"name\\":\\"c\\"},\\"d\\":{\\"id\\":4},\\"e\\":{\\"id\\":1,\\"name\\":\\"f\\"},\\"g\\":{\\"id\\":8,\\"name\\":\\"h\\"},\\"hours\\":1.0,\\"comments\\":\\"\\",\\"spent_on\\":\\"2016-01-10\\"}]}}";
NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];
现在,NSData
使用NSJSONSerialization
id
id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
在这里,你有你的json数据
NSLog(@"%@",json);