如何创建一个字符串数组(字符串包含JSON数据)

3

我想创建一个像下面这样的字符串:

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

我该如何实现?

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

如果你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
你想把 JSON 字符串转换成数组吗? - Bilal
这里的34是什么? - Prashant Tukadiya
你的意思是将NSArray转换为NSData,然后再转换为NSString吗? - Apple
尝试一下吧... - Prashant Tukadiya
NSArray *json = @[header];NSData *mapPointsData = [NSKeyedArchiver archivedDataWithRootObject:json];NSString *modelJSON = [[NSString alloc] initWithData:mapPointsData encoding:NSUTF8StringEncoding]; 获取到的 modelJSON 值为 nil。 - Apple
显示剩余6条评论
1个回答

3

您不需要使用stringWithFormat

正如您所提到的,如果您没有JSONNSData,则可以使用以下方法进行转换

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

使用前别忘了检查错误 :)

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接