首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >转换NSArray ->JSON -> NSData ->服务器->JSON表示

转换NSArray ->JSON -> NSData ->服务器->JSON表示
EN

Stack Overflow用户
提问于 2012-04-24 09:51:24
回答 3查看 25.1K关注 0票数 12

我正在使用以下代码将NSDictionaries数组转换为JSON数据。

创建我的数据...

代码语言:javascript
运行
复制
NSMutableArray *arrayOfDicts = [[NSMutableArray alloc] init];

for (int i = 0; i < 2; i++) {
    NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
                                  @"MySong", @"title",
                                  @"MyArtist", @"artist",
                                  nil];
    [arrayOfDicts addObject:dict];         
}
 NSArray *info = [NSArray arrayWithArray:arrayOfDicts];
 NSData* jsonData = [NSJSONSerialization dataWithJSONObject:info 
      options:NSJSONWritingPrettyPrinted error:&error];

然后像这样发送。

代码语言:javascript
运行
复制
NSURL *url = [NSURL URLWithString:@"http://www.mywebsite.com/index.php"];
    ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
    [request setPostValue:jsonData forKey:@"songs"];
    [request setDelegate:self];
    request.tag = TAG_LOAD_SONGS;
    [request startAsynchronous];

这是发送NSData到我的服务器,但我如何在php中使用它…如果我从我的服务器上打印出来,它真的只是一堆随机数,我尝试过使用json_encode,但我认为这不是指原始数据……

任何帮助都是最好的!

编辑:这是php的响应...

代码语言:javascript
运行
复制
echo $_POST['songs'];

<5b0a2020 7b0a2020 20202274 69746c65 22203a20 224d7953 6f6e6722 2c0a2020 20202261 72746973 7422203a 20224d79 41727469 7374220a 20207d2c 0a20207b 0a202020 20227469 746c6522 203a2022 4d79536f 6e67222c 0a202020 20226172 74697374 22203a20 224d7941 72746973 74220a20 207d0a5d>

下面是Xcode中对NSLoging的响应...

代码语言:javascript
运行
复制
NSLog(@"Info: %@", info);

信息:({艺术家= MyArtist;标题= MySong;},{艺术家= MyArtist;标题= MySong;})

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-04-26 04:53:03

事实证明我需要这样做:

要创建我的数据:

代码语言:javascript
运行
复制
NSMutableArray *arrayOfDicts = [[NSMutableArray alloc] init];

for (int i = 0; i < 2; i++) {
    NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
                                  @"MySong", @"title",
                                  @"MyArtist", @"artist",
                                  nil];
    [arrayOfDicts addObject:dict];         
}
 NSArray *info = [NSArray arrayWithArray:arrayOfDicts];

并像这样发送:

代码语言:javascript
运行
复制
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:info 
          options:NSJSONWritingPrettyPrinted error:&error];
NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];

    // Start request
    NSURL *url = [NSURL URLWithString:@"http://www.mywebsite.com/index.php"];
    ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
    [request setPostValue:jsonString forKey:@"songs"];
    [request setDelegate:self];
    [request startAsynchronous];

关键是将信息转换为NSData,然后转换为我发送到服务器的JSON字符串,而不仅仅是发送原始的NSData

感谢大家的帮助!

票数 20
EN

Stack Overflow用户

发布于 2012-04-24 09:55:07

<?php $array = json_decode($_POST['songs']); ?>应该可以工作。

票数 1
EN

Stack Overflow用户

发布于 2012-04-24 11:43:36

你不能用这种方式发送。NSJSONSerialization用于iOS。它基本上是一个plist。你需要一种在PHP上解码它的方法,我怀疑它是否存在。相反,您需要发送一个JSON字符串。我不确定你所说的“在标题周围加引号”是什么意思。他们一开始在那里做什么?你能验证你的原始JSON字符串here吗?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10290767

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档