gpt4 book ai didi

ios - 如何对从iOS到PHP的数组中的数组进行JSON编码

转载 作者:行者123 更新时间:2023-12-01 17:22:53 25 4
gpt4 key购买 nike

我尝试将NSDictionary JSON编码为NSArray上载到PHP Web服务。

这就是我对我的NSArray进行JSON编码的方式:

NSError * error;
NSData * jsonData = [NSJSONSerialization dataWithJSONObject:my_array_1 options:0 error:&error];
NSString * jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
jsonString = [jsonString stringByReplacingOccurrencesOfString:@"\"" withString:@"\\\""];

然后通过以下方式将此JSON字符串插入另一个数组:
NSString * jsonRequest = [NSString stringWithFormat: @"{\"request\":\"syncBookmark\",\"bookmark_array\":\"%@\",\"user_id\":\"%@\"}", jsonString, user_id, nil];
NSData * requestData = [NSData dataWithBytes:[jsonRequest UTF8String] length:[jsonRequest length]];

在我请求Web服务之前,JSON编码的字符串类似于:
{"request":"syncBookmark","bookmark_array":"[{\"PostId\":\"4\",\"last_edit_date\":\"2014-03-03 01:05:37\",\"BookmarkId\":\"1\",\"last_sync_date\":\"\",\"is_active\":\"1\"}]","user_id":"7"}

我可以正确地在PHP中回显“user_id”,即“7”,但是当我检查数组-PHP中的is_array($ bookmark_array)时,它只会返回FALSE。我在错误地将数组放入数组中的方式吗?

最佳答案

不要打扰stringByReplacingOccurrencesOfString东西。让NSJSONSerialization为您完成所有必要的报价。

因此,如果您确实需要jsonString作为PHP将递归地对其进行反编码的字符串,则只需JSON对数组进行编码,然后将其放入另一个字典中,然后再次对其进行编码:

NSError  *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:my_array_1 options:0 error:&error];
NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];

NSDictionary *dictionary = @{@"request" : @"syncBookmark",
@"bookmark_array" : jsonString,
@"user_id" : user_id};

NSData *finalData = [NSJSONSerialization dataWithJSONObject:dictionary options:0 error:&error];

那应该创建一个有效载荷,就像您在问题中说的那样。

话虽如此,更合乎逻辑的方法是:
NSError  *error;

NSDictionary *dictionary = @{@"request" : @"syncBookmark",
@"bookmark_array" : my_array_1,
@"user_id" : user_id};

NSData *finalData = [NSJSONSerialization dataWithJSONObject:dictionary options:0 error:&error];

如果这就是生成有效负载的原因,那么您的PHP不必对 json_decode进行多次调用。

关于ios - 如何对从iOS到PHP的数组中的数组进行JSON编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22131514/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com