【问题标题】:json data to serverjson数据到服务器
【发布时间】:2025-11-22 06:15:01
【问题描述】:

我正在开发一个应用程序,其中我必须以JSON 格式将deviceTokenuuid 发送到服务器,例如:"regid":"x1y2z3","uuid":"1a2b3c" 如何以这种格式将NSStrings 存储到NSData并将其发送到服务器?

regid 字符串类似于x1y2z3uuidstring 类似于1a2b3c

我的代码:

 PushNotification* pushHandler = [self.viewController getCommandInstance:@"PushNotification"];
[pushHandler didRegisterForRemoteNotificationsWithDeviceToken:deviceToken];

NSString *deviceT = [[deviceToken description] stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]];
NSString *tkStr = [[NSString alloc]initWithData:deviceToken encoding:NSUTF8StringEncoding];
tkStr = [deviceT stringByReplacingOccurrencesOfString:@" " withString:@""];
NSLog(@"Device Token = %@",tkStr);
//UUID
CFUUIDRef uuid = CFUUIDCreate(kCFAllocatorDefault);
NSString *uuidStr = ( NSString *)CFUUIDCreateString(kCFAllocatorDefault, uuid);
CFRelease(uuid);
NSString *finalUIDstr = [uuidStr stringByReplacingOccurrencesOfString:@"-" withString:@""];
NSLog(@"UUID = %@",finalUIDstr);
NSArray *keysArray = [NSArray arrayWithObjects:@"regid", @"uuid", nil];
NSArray *objectArray = [NSArray arrayWithObjects:tkStr,finalUIDstr, nil];
//Dictionary

NSDictionary *jsonDict = [NSDictionary dictionaryWithObjects:objectArray forKeys:keysArray];

【问题讨论】:

    标签: ios json nsdata


    【解决方案1】:

    如果您想生成该 JSON 字符串,您可以构建您的字典(这是在 Xcode 4.5 中执行此操作的更简洁的方法,而不是构建这两个数组然后将它们组合成一个字典):

    NSDictionary *dictionary = @{@"regid":tkStr,@"uuid":finalUIDstr};
    

    然后生成你的 JSON 字符串:

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

    【讨论】:

    • 服务器将接受["regid":"x1y2z3","uuid":"1a2b3c"] 格式的数据,但是当我接受NSLog 结果就像JSON DATA = &lt;7b227265 67696422 3a223831 63666131 38343236 61366363 64333666 62633132 64376361 65663734 37633963 30333439 65316163 61333064 33633461 37326330 36636165 36613238 6231222c 22757569 64223a22 38433135 45363831 45434643 34363633 39333644 34334541 42343036 35444641 227d&gt; 这样可以接受吗?
    • 是的,当您登录 NSData 时,它会显示代码。如果您想查看该数据的NSString 表示,请查看[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]
    • 谢谢它的工作,但我想在服务器端 Can not convert D2655594D8B84D7E9B73130D340D9A94 长值存在一些问题'
    • 这可能是你如何发布它的问题(以及服务器需要什么格式)。请参阅此已接受答案的有关发布 JSON 数据的部分:*.com/a/4466899/1271826。但我认为我们在这里正确构建了 JSON。
    【解决方案2】:

    将 NSDictionary 转换为 Json(NSJSONSerialization 或 SBJson)并将其作为 Application/Json 发布到服务器。

    【讨论】: