当前位置: 首页 > 面试题库 >

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

濮赤岩
2023-03-14
问题内容

我正在使用以下命令将NSDictionaries数组转换为JSON数据…

创建我的数据…

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];

然后像这样发送…

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的响应…

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的响应…

NSLog(@"Info: %@", info);

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


问题答案:

原来我需要这样做:

要创建我的数据:

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];
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字符串,而不仅仅是发送raw NSData

谢谢大家的帮助!



 类似资料:
  • 问题内容: 我在Swift 中将元素转换为,然后将变量转换回时遇到了问题。 首先,我想提取以下JSON数据的元素: 放入NSData 变量,但似乎无法做到这一点。我用来解析如下: 但这给了我一个ScalarNumber数组,我不知道如何存储到一个对象中。 其次,我想从同一个对象生成回来: 但是NSData 对象不会转换为[-67,51,-38,61,-72,102,48],它只是使JSON字符串无

  • 问题内容: 我有一个场景。 必需的输入和输出是JSON。 我需要一些转换代码或最好是xslt类型的语言才能将json从一种格式转换为另一种格式。该变压器也需要快速运行,因为转换将即时进行。 编辑 我没有收到INPUT对象的定义,它可能会在运行时更改。但是如果需要,我可以将类用于OUTPUT对象。我尝试以 json- > xml-> xslt-> xml-> json的方式进行此操作 ,但 此刻 每

  • 问题内容: 我需要以数组格式发送一个到服务器。如何将其转换为。这是我必须通过的样本。 所需的格式是这样的 有人有解决办法吗?提前致谢。 问题答案:

  • 问题内容: 我正在尝试将xml中的xml转换为json。如果我使用简单的xml和json_encode进行简单的转换,则xml中的任何属性都不会显示。 所以我试图像这样手动解析它。 状态的输出不是 我究竟做错了什么? XML: 输出: var dump: 问题答案: 我想到了。json_encode处理对象的方式与处理字符串的方式不同。我将该对象转换为字符串,现在可以正常工作。

  • 问题内容: 最近5个小时,我一直在尝试将json对象发布到PHP脚本中。我已经阅读了所有文档,似乎代码应该可以,但事实并非如此。发出并接收到请求,但是我无法访问发布的json数据,甚至不知道它是否已正确发送。我不断得到一个空的php数组,而不是json数据。 这是php脚本(test.php) 我正在使用来自https://github.com/pokeb/asi-http- request.gi

  • 我正在从服务器中提取一个.json文件,并试图将其读入应用程序中的NSDictionary。部分文件被正确解析,但不完整-仅读取部分文件。 奇怪的是,NSData的长度与实际文件的长度相等,所以它似乎具有完全访问权限,至少在某些阶段是这样的。然而,当我记录NSData时,对于文件的大小来说,它似乎太短了。 这是我用来查找错误的代码: 我尝试了从服务器远程加载和从NSBundle本地加载-结果相同。