如何在ios中将nsstring格式转换为json响应格式?

时间:2016-01-12 11:47:44

标签: ios objective-c json

我的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响应格式。或者其他任何其他简单的方法来执行此任务。请向我提出想法。

2 个答案:

答案 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);
相关问题