使用数组和字典以正确的 JSON 格式设置数据
Setting data in correct JSON format using Array and Dictionary
下面是我必须为其设置数据的模型。我正在使用数组和字典来实现这一点,这是我尝试过的代码。但它给我的输出是 invalid JSON
.
我还想问一件事,为什么 log of an array starts and ends with small braces?
任何帮助将非常感激。
代码:
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"}}
没有错。在控制台或日志中圆括号 ()
表示数组。如果它显示圆括号那么它是数组。你永远不会在控制台或日志中输入 []
方括号。
更新:
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":""
}
}
下面是我必须为其设置数据的模型。我正在使用数组和字典来实现这一点,这是我尝试过的代码。但它给我的输出是 invalid JSON
.
我还想问一件事,为什么 log of an array starts and ends with small braces?
任何帮助将非常感激。
代码:
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"}}
没有错。在控制台或日志中圆括号 ()
表示数组。如果它显示圆括号那么它是数组。你永远不会在控制台或日志中输入 []
方括号。
更新:
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":""
}
}