将二进制数据转换为要通过json传输的字节数组

时间:2012-10-23 15:22:18

标签: objective-c restkit

我正在创建一个与wcf服务对话的iphone客户端(我无法控制服务器,因此不能在此处进行任何更改。)

我需要将图像发送到此服务器,以及其他一些信息。它必须使用json发送。

我正在使用restkit发送和接收数据。

问题是,二进制数据必须作为字节数组发送。不是base64编码的字符串。

如何从UIimage获取看起来像这样的json字符串

“图片”:{ “内容”:[1,1,1,1,1,1,1,1,1,1,1,1,1,1,.........

我愿意接受不使用restkit的解决方案。

3 个答案:

答案 0 :(得分:0)

接收WCF服务的类型是什么?字节[]?

听起来很糟糕,但您可以尝试映射到NSNumber实现并创建它们的数组。

我认为这将序列化为:

“图片”:{ “内容”:[ “1”, “1”, “1” ...

因此您可能还需要自定义格式化程序。

答案 1 :(得分:0)

这是一个将字节数组转换为NSString的SO帖子。如果我正确理解该问题,请尝试将字节数组转换为字符串,然后将其添加到您的Feed中。 Objective-C - How can I convert Byte Array to NSString?

以下是代码所接受答案的摘录:

            NSData *data = [[NSMutableData alloc] init];
            uint8_t buffer[1024];
            unsigned int len = 0;

            len =  [(NSInputStream *)stream read:buffer maxLength:1024];

            if(len > 0)
            {
                [data appendBytes:&buffer length:len];
            }
            NSString *serverText = [[NSString alloc]
                                    initWithData:data
                                    encoding:NSASCIIStringEncoding];

            NSLog(@"%@", serverText);

另外值得注意的是,一旦你将值输入你的json,请注意你不要超过你的json max string length值。

答案 2 :(得分:0)

感谢您的快速回复。

无法获得任何建议的解决方案,因此我们必须使用我们疯狂的人员技能,并使制作服务器端服务的公司改变其结束,以便我们可以发送base64编码的字符串。