发送JSON对象ios

时间:2014-12-29 21:04:05

标签: ios json xcode

我是iOS新手并寻求一些帮助。我正在连接到我的套接字服务器,但发送时遇到问题。

下面是如何发射:

if (self.socketIsConnected)
{
    [self.socket emit:(NSString HERE) args:@[(NSArray HERE)]];
}

继承我尝试的内容:

if (self.socketIsConnected)
{
    NSDictionary *deviceDic = @{@"username": @"drew", @"chatHash":@"FJHE8"};
    [self.socket emit:@"adduser" args:@[[NSString stringWithFormat: @"%@", deviceDic]]];
}

“args”param请求NSArray,但我需要发送一个如下所示的JSON对象:

{"username": "drew", "chatHash":"FJHE8"}

我该如何创建?如何将此对象放入NSArray中。

更新:

我现在试过这个

    NSArray *keys = [NSArray arrayWithObjects:@"username", @"chatHash", nil];
    NSArray *objects = [NSArray arrayWithObjects:@"drew", @"value2", nil];
    NSDictionary *dictionary = [NSDictionary dictionaryWithObjects:objects
                                                           forKeys:keys];
    [self.socket emit:@"adduser" args:dictionary];

我看了一下服务器。它使用throw异常崩溃了我的服务器。它收到的唯一数据是:

用户名

2 个答案:

答案 0 :(得分:0)

您似乎正在使用SIOSocket。文档不是很清楚但是查看emit函数的源(https://github.com/MegaBits/SIOSocket/blob/master/SocketIO/Source/SIOSocket.m),你需要做的就是传递一个NSArray,第一个参数是NSDictionary。字典将被框架序列化为JSON对象。

您可以在emit调用中拥有多个参数。参数中每个参数的类型取决于您传递的数组中的对象类型。如果你传递一个字典,它会将它转换为JSON对象,数组为数组,数字为数字,字符串为字符串。

答案 1 :(得分:0)

您可以使用

     NSDictionary *subArgs = @{@"state" : @true};
     [self.socket emit:@"adduser" args:@[subArgs]];

这将解决问题。