ios - 如何将 JSON 数据放入 Objective-C 中的另一个 JSON 数据?

标签 ios objective-c json

我正在尝试在 Objective-C 中使用 POST 发送 JSON 数据。

我有两个 NSDictionary ,我想把第一个 NSDictionary**(json_dst)** 放到第二个 NSDictionary**(json)** 中。

我尝试了下面的代码,但它似乎不正确......

NSString DEVICE_UUID = @"9c88da0c-5362-460b-8647-590a981d912e";
int command = 65536;

    NSDictionary *json_dst = [NSDictionary dictionaryWithObjectsAndKeys:@"type", @"Device",@"uuid",DEVICE_UUID, nil];

    NSDictionary *json = [NSDictionary dictionaryWithObjectsAndKeys:@"id",@"200",@"dst",json_dst,@"msgType",@"MESSAGE",@"msg",command, nil];

它将在 NSDictionary *json = [NSDictionary dictionaryWithObjectsAndKeys:@"id",@"200",@"dst",json_dst,@"msgType",@"MESSAGE",@"msg"时崩溃命令,无];

错误日志是

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Invalid (non-string) key in JSON dictionary'

但我不知道原因...

有人可以教我怎么做吗?我错过了什么吗?

提前致谢。

最佳答案

首先,您的键和对象的顺序错误。

其次,您试图将原始类型放入字典中(命令是一个 int)。字典必须包含 Objective-C 实例,从 NSObject 继承。

最后,您的 DEVICE_UUID 缺少指针星号 (*)。

为了使字典更易于使用并使其保持键值顺序,我将使用 modern Objective-C literals 进行展示。 .

不是直接将原语放入,而是需要将其包装在 NSNumber 中。这可以通过“装箱”@(command) 中的数字来完成,这是文字的另一个特征。

NSString *DEVICE_UUID = @"9c88da0c-5362-460b-8647-590a981d912e";
int command = 65536;

NSDictionary *json_dst = @{@"type":@"Device", @"uuid":DEVICE_UUID};
NSDictionary *json = @{@"id":@"200", @"dst":json_dst, @"msgType":@"MESSAGE", @"msg":@(command)};

关于ios - 如何将 JSON 数据放入 Objective-C 中的另一个 JSON 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26038995/

相关文章:

ios - 如何在普通 UIView(不是 UIImage)上获得多重混合模式

json - iOS 14 中的通用链接 apple-app-site-association 文件

ios - Objective-C 应用程序中缺少 Swift 框架中的 IBOutlet 属性

ios - NSRangeException 使用-[ALAssetsGroup enumerateAssetsUsingBlock :]

ios - Xcode 单元测试返回没有 'private keyword' 的临时文件夹的 NSURL

ios - 处理信用卡和IOS

ios - 将json作为字符串保存到核心数据并使用字符串创建对象数组

ios - 如何访问 Objective-C 中键的单个 JSON 值

iOS:从 UITextView 中提取检测到的数字和链接?

ios - 集成:我应该为图像选择哪种类型的全局标识符?