如何创建一个字符串数组(String具有json数据)

时间:2017-08-03 06:25:37

标签: ios objective-c iphone

我想制作如下字符串

contentlist=["{\"id\":\"id1\"}"]

我怎样才能实现这个目标?

我尝试使用NSString方法stringWithFormat:@"contentlist=[\"%@\"]  但是当你复制该字符串并将其粘贴到textedit或者粘贴或任何地方时,它都有\个字符。

如果您print此行显示为contentlist=["{"id":"id1"}]我不想要的内容。

编辑:

这是我的代码..

NSString *stringUrl = <MY SERVER URL STRING>
NSString *param = [NSString stringWithFormat:@"contentlist=[%c%@%c]",34,header,34];

NSData *postData = [param dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *postLength = [NSString stringWithFormat:@"%lu",(unsigned long)[postData length]];

NSError *error;
NSMutableURLRequest *req = [[AFJSONRequestSerializer serializer] requestWithMethod:@"POST" URLString:stringUrl parameters:nil error:&error];
req.timeoutInterval= 40.0;

[req setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[req setValue:postLength forHTTPHeaderField:@"Content-Length"];
[req setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[req setHTTPBody:postData];

我的header值是..

{\"id\":\"21ca7309\",\"indexVersion\":0,\"modified\":1501694202014,\"created\":1501691797232,\"modifiedBy\":\"42bebd87be6ddd4a\",\"name\":\"abcd\"}

我的参数值如何在debug模式中显示..

@"contentlist=[\"{\"id\":\"21ca7309\",\"indexVersion\":0,\"modified\":1501694202014,\"created\":1501691797232,\"modifiedBy\":\"42bebd87be6ddd4a\",\"name\":\"abcd\"}\"]

我需要传递的方式如下:

contentlist:["{\"id\":\"21ca7309\",\"indexVersion\":0,\"modified\":1501694202014,\"created\":1501691797232,\"modifiedBy\":\"42bebd87be6ddd4a\",\"name\":\"abcd\"}"]

1 个答案:

答案 0 :(得分:3)

您不需要使用stringWithFormat

正如您所提到的,如果您没有NSData JSON,那么请使用

转换它
NSError *error;
NSData *data =  [NSJSONSerialization dataWithJSONObject:yourJSONO options:NSJSONWritingPrettyPrinted error:&error];

使用前请不要忘记检查错误:)

您可以使用以下代码轻松获取字符串

NSString *str = [[NSstring alloc] initWithData:data encoding:NSUTF8StringEncoding]