Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/115.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何将JSON数据放入Objective-C中的另一个JSON数据中?_Ios_Objective C_Json - Fatal编程技术网

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

Ios 如何将JSON数据放入Objective-C中的另一个JSON数据中?,ios,objective-c,json,Ios,Objective C,Json,我正在尝试使用Objective-C中的POST发送JSON数据 我有两个NSDictionary,我想把第一个NSDictionary**(JSONDST)**放到第二个NSDictionary**(json)**中 我尝试了以下代码,但似乎不正确 NSString DEVICE_UUID = @"9c88da0c-5362-460b-8647-590a981d912e"; int command = 65536; NSDictionary *json_dst = [NSDictio

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

我有两个NSDictionary,我想把第一个NSDictionary**(JSONDST)**放到第二个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 Dictionary WithObjectsAndKeys:@“id”、@“200”、@“dst”、json_dst、@“msgType”、@“MESSAGE”、@“msg”、command,nil]

错误日志是

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Invalid (non-string) key in JSON dictionary'
但我不知道原因

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


提前感谢。

首先,您的钥匙和物品顺序不对

其次,您试图将一个基本类型放入字典(命令是int)。字典必须包含Objective-C实例,从NSObject子类化

最后,您的设备_UUID缺少一个指针星(*)

为了使字典更易于使用,并使其按键值顺序排列,我将演示如何使用

您需要将原语包装成一个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)};

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

其次,您试图将一个基本类型放入字典(命令是int)。字典必须包含Objective-C实例,从NSObject子类化

最后,您的设备_UUID缺少一个指针星(*)

为了使字典更易于使用,并使其按键值顺序排列,我将演示如何使用

您需要将原语包装成一个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)};

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

其次,您试图将一个基本类型放入字典(命令是int)。字典必须包含Objective-C实例,从NSObject子类化

最后,您的设备_UUID缺少一个指针星(*)

为了使字典更易于使用,并使其按键值顺序排列,我将演示如何使用

您需要将原语包装成一个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)};

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

其次,您试图将一个基本类型放入字典(命令是int)。字典必须包含Objective-C实例,从NSObject子类化

最后,您的设备_UUID缺少一个指针星(*)

为了使字典更易于使用,并使其按键值顺序排列,我将演示如何使用

您需要将原语包装成一个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)};


您的主要问题是对象和关键点颠倒了。您也不能直接插入数字——它们必须是NSNumber对象。@HotLicks对不起,您能解释一下吗。哪一个是数字?“数字”是
200
,在你将问题编辑成引号之前。而
command
是一个数字。你读过我的第一条评论吗???你的主要问题是你把对象和键颠倒了。您也不能直接插入数字——它们必须是NSNumber对象。@HotLicks对不起,您能解释一下吗。哪一个是数字?“数字”是
200
,在你将问题编辑成引号之前。而
command
是一个数字。你读过我的第一条评论吗???你的主要问题是你把对象和键颠倒了。您也不能直接插入数字——它们必须是NSNumber对象。@HotLicks对不起,您能解释一下吗。哪一个是数字?“数字”是
200
,在你将问题编辑成引号之前。而
command
是一个数字。你读过我的第一条评论吗???你的主要问题是你把对象和键颠倒了。您也不能直接插入数字——它们必须是NSNumber对象。@HotLicks对不起,您能解释一下吗。哪一个是数字?“数字”是
200
,在你将问题编辑成引号之前。而
command
是一个数字。你读过我的第一条评论吗???那么正确的顺序是NSDictionary
*json_dst=[NSDictionary Dictionary Dictionary WithObjectsandKeys:@“Device”、@“type”、Device_UUID、@“UUID”、nil]。这就是你的意思吗?@Martin如果你想使用-dictionaryWithObjectsAndKeys:方法编写它,那么是的,正如方法名称所描述的,对象排在第一位,键排在第二位。然而,我建议使用我在答案中的内容,因为它更容易阅读,也更安全;您将被告知其中一个对象是否为nil,而不是自动生成错误的字典。因此,正确的顺序是NSDictionary
*json_dst=[NSDictionary dictionary WithObjectsAndKeys:@“Device”、@“type”、Device_UUID、@“UUID”、nil]。这就是你的意思吗?@Martin如果你想使用-dictionaryWithObjectsAndKeys:方法编写它,那么是的,正如方法名称所描述的,对象排在第一位,键排在第二位。然而,我建议使用我在答案中的内容,因为它更容易阅读,也更安全;您将被告知其中一个对象是否为nil,而不是自动生成错误的字典。因此,正确的顺序是NSDictionary
*json_dst=[NSDictionary dictionary WithObjectsAndKeys:@“Device”、@“type”、Device_UUID、@“UUID”、nil]。这就是你的意思吗?@Martin如果你想使用-dictionaryWithObjectsAndKeys:方法编写它,那么是的,正如方法名称所描述的,对象排在第一位,键排在第二位。然而,我建议使用我在答案中的内容,因为它更容易阅读,也更安全;您将被告知其中一个对象是否为nil,而不是无声地生成inc