Ios 使用数组和字典以正确的JSON格式设置数据

Ios 使用数组和字典以正确的JSON格式设置数据,ios,objective-c,json,nsarray,Ios,Objective C,Json,Nsarray,下面是我必须为其设置数据的模型。我正在使用数组和字典来实现这一点,下面是我尝试的代码。但是它给我的输出是无效的JSON 我还想问一件事,为什么数组的日志以小括号开始和结束? 任何帮助都将不胜感激 代码: NSDictionary *paramDic = [NSDictionary dictionaryWithObjectsAndKeys: parameterName,@"parameterName", p

下面是我必须为其设置数据的模型。我正在使用数组和字典来实现这一点,下面是我尝试的代码。但是它给我的输出是
无效的JSON

我还想问一件事,为什么数组的
日志以小括号开始和结束?

任何帮助都将不胜感激

代码:

NSDictionary *paramDic = [NSDictionary dictionaryWithObjectsAndKeys:
                       parameterName,@"parameterName",
                       parameterType, @"parameterType",
                       [NSNumber numberWithBool:parameterSorting],@"parameterSorting",[NSNumber numberWithBool:parameterSorting],
                       @"parameterOrdering",
                       nil];

NSMutableArray *paramArray = [NSMutableArray arrayWithObject:paramDic];
NSDictionary *paramData = @{@"rqBody":@{@"catalogName":@"",@"userId":@"", @"parameter":paramArray, @"catalogMode":@""}};

NSData *postData = [NSKeyedArchiver archivedDataWithRootObject:paramData];`
输出:

{"rqBody":{"catalogName":"abcd","userId":"65265hgshg76","parameter":"(
        {
        parameterName = anandShankar;
        parameterOrdering = 1;
        parameterSorting = 1;
        parameterType = Text;
    }
)","catalogMode":"xxxxxx"}}
{"rqBody":{"catalogName":"abcd","userId":"65265hgshg76","parameter":[{
        "parameterName" : "anandShankar",
        "parameterOrdering" : 1,
        "parameterSorting" : 1,
        "parameterType" : "Text"
    }],"catalogMode":"xxxxxx"}}
所需输出:

{"rqBody":{"catalogName":"abcd","userId":"65265hgshg76","parameter":"(
        {
        parameterName = anandShankar;
        parameterOrdering = 1;
        parameterSorting = 1;
        parameterType = Text;
    }
)","catalogMode":"xxxxxx"}}
{"rqBody":{"catalogName":"abcd","userId":"65265hgshg76","parameter":[{
        "parameterName" : "anandShankar",
        "parameterOrdering" : 1,
        "parameterSorting" : 1,
        "parameterType" : "Text"
    }],"catalogMode":"xxxxxx"}}

没有什么不对的。在控制台或日志中,大括号
()
表示数组。如果它显示圆括号,则它是数组。您永远不会在控制台或日志中使用方括号

更新:

  NSData *data = [NSJSONSerialization dataWithJSONObject:paramData options:kNilOptions error:nil];
然后将此数据发送到服务器。它将在您想要的json fromat中显示

希望这会有所帮助:)

请尝试以下代码:

NSDictionary *paramDic = [NSDictionary dictionaryWithObjectsAndKeys:
        @"Object1",@"parameterName",
        @"Object2", @"parameterType",
        @'Object3',@"parameterSorting",@"Object4",
        @"parameterOrdering",
                nil];
NSMutableArray *paramArray = [NSMutableArray arrayWithObject:paramDic];

NSDictionary *paramData = @{@"rqBody":@{@"catalogName":@"",@"userId":@"", @"parameter":paramArray, @"catalogMode":@""}};
添加以下行:

NSError * err;
NSData * jsonData = [NSJSONSerialization dataWithJSONObject:paramData options:0 error:&err];
NSString * myString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];

NSLog(@"%@", myString); // it will print valid json 
JSON

{  
  "rqBody":{  
     "catalogName":"",
     "parameter":[  
        {  
           "parameterOrdering":"Object4",
           "parameterName":"Object1",
           "parameterType":"Object2",
           "parameterSorting":51
        }
     ],
     "userId":"",
     "catalogMode":""
  }
}

“参数”:[{show array of dictionary所以你可以把dictionary放到array中并设置为paramData dictionary…它的paramDic,我正在把它作为对象添加到arrayThanks中进行解释。但是我如何用逗号替换这些半列,使我的数据成为有效的json?你想在服务器中发送此数据吗?:是的,请检查所需的格式有问题。请在回答中检查我的更新。您需要像这样转换数据,您可以使用
nsursession
将此数据发送到服务器。不要使用NSKeyedArchiver,请使用
nsjsonserialization
,正如我在回答中提到的那样。传递您的最终命令并将该数据发送到serverArray是我的要求,但我仍然尝试了上面的代码也不能生成有效的JSON:(检查我的更新我已经测试过了,它将生成有效的JSONCheck更新它将创建一个内部带有NSArray的有效JSON