应用程序之间 JSON 的不同 NSMutableDictionary 格式
好吧,这就是问题所在。我有两个应用程序需要打包 JSON 请求数据并将其发送到服务器。问题是,当我打印 NSMutableDictionary 的结果用作 JSON 请求正文时,我从不同的应用程序得到不同的结果。我以相同的方式格式化数据,但不明白为什么我得到不同的结果。可能是编译器设置?还是iOS版本?不确定此时要检查什么。
requestDictionary = [[NSMutableDictionary alloc] init];
// Set Lead type
NSString *leadType = @"lead";
[requestDictionary setObject:leadType forKey:@"type"];
// Set Lead status
NSString *leadStatus = @"1";
[requestDictionary setObject:leadStatus forKey:@"status"];
// Set Lead email
if([data objectForKey:@"email"]){
m_leadEmail = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:[data objectForKey:@"email"], @"value", nil], nil];
[requestDictionary setObject:m_leadEmail forKey:@"field_lead_email"];
}
else{
NSMutableArray *leadEmail = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"[email protected]", @"value", nil], nil];
[requestDictionary setObject:leadEmail forKey:@"field_lead_email"];
}
NSLog(@"Email field: %@", m_leadEmail);
// Set Lead source
NSMutableArray *leadSource = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"19018", @"nid", nil], nil];
[requestDictionary setObject:leadSource forKey:@"field_lead_source"];
// Set Lead event
NSMutableArray *leadEvent = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"19018", @"nid", nil], nil];
[requestDictionary setObject:leadEvent forKey:@"field_lead_event"];
// Set Lead tags
NSMutableArray *leadTags = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"", @"value", nil], nil];
[requestDictionary setObject:leadTags forKey:@"field_lead_tags"];
// Set Lead title
NSMutableArray *leadTitle = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"My Title", @"value", nil], nil];
[requestDictionary setObject:leadTitle forKey:@"field_lead_title"];
// Set Lead first name
if([data objectForKey:@"firstName"]){
NSMutableArray *leadFirstName = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:[data objectForKey:@"firstName"], @"value", nil], nil];
[requestDictionary setObject:leadFirstName forKey:@"field_lead_first_name"];
}
else{
NSMutableArray *leadFirstName = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"TestLead", @"value", nil], nil];
[requestDictionary setObject:leadFirstName forKey:@"field_lead_first_name"];
}
// Set Lead last name
if([data objectForKey:@"lastName"]){
NSMutableArray *leadLastName = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:[data objectForKey:@"lastName"], @"value", nil], nil];
[requestDictionary setObject:leadLastName forKey:@"field_lead_last_name"];
}
else{
NSMutableArray *leadLastName = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"Tester", @"value", nil], nil];
[requestDictionary setObject:leadLastName forKey:@"field_lead_last_name"];
}
// Set Lead middle name
NSMutableArray *leadMidName = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"MiddleName", @"value", nil], nil];
[requestDictionary setObject:leadMidName forKey:@"field_lead_middle_name"];
// Set Lead suffix
NSMutableArray *leadSuffix = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"Mr.", @"value", nil], nil];
[requestDictionary setObject:leadSuffix forKey:@"field_lead_suffix"];
// Set Lead job title
NSMutableArray *leadJobTitle = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"Job Title", @"value", nil], nil];
[requestDictionary setObject:leadJobTitle forKey:@"field_lead_job_title"];
// Set Lead company
NSMutableArray *leadCompany = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"MyCompany", @"value", nil], nil];
[requestDictionary setObject:leadCompany forKey:@"field_lead_company"];
// Set Lead division
NSMutableArray *leadDivision = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"My Division", @"value", nil], nil];
[requestDictionary setObject:leadDivision forKey:@"field_lead_division"];
// Set Lead add1
NSMutableArray *leadAdd1 = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"123 Anywhere Street", @"value", nil], nil];
[requestDictionary setObject:leadAdd1 forKey:@"field_lead_add1"];
// Set Lead add2
NSMutableArray *leadAdd2 = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"Address 2", @"value", nil], nil];
[requestDictionary setObject:leadAdd2 forKey:@"field_lead_add2"];
// Set Lead city
NSMutableArray *leadCity = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"Austin", @"value", nil], nil];
[requestDictionary setObject:leadCity forKey:@"field_lead_city"];
// Set Lead state
NSMutableArray *leadState = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"TX", @"value", nil], nil];
[requestDictionary setObject:leadState forKey:@"field_lead_state"];
// Set Lead country
NSMutableArray *leadCountry = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"USA", @"value", nil], nil];
[requestDictionary setObject:leadCountry forKey:@"field_lead_country"];
// Set Lead phone1
if([data objectForKey:@"phoneNumber"]){
NSMutableArray *leadPhone1 = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:[data objectForKey:@"phoneNumber"], @"value", nil], nil];
[requestDictionary setObject:leadPhone1 forKey:@"field_lead_phone_1"];
}
else{
NSMutableArray *leadPhone1 = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"555-555-1212", @"value", nil], nil];
[requestDictionary setObject:leadPhone1 forKey:@"field_lead_phone_1"];
}
// Set Lead phone2
NSMutableArray *leadPhone2 = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"555-555-1234", @"value", nil], nil];
[requestDictionary setObject:leadPhone2 forKey:@"field_lead_phone_2"];
// Set Lead fax
NSMutableArray *leadFax = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"555-555-1111", @"value", nil], nil];
[requestDictionary setObject:leadFax forKey:@"field_lead_fax"];
// Set Lead website
NSMutableArray *leadWebsite = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"http://sparksight.com", @"value", nil], nil];
[requestDictionary setObject:leadWebsite forKey:@"field_lead_website"];
// Set Lead zip
NSMutableArray *leadZip = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"78759", @"value", nil], nil];
[requestDictionary setObject:leadZip forKey:@"field_lead_zip"];
// Set Lead RFID
NSMutableArray *leadRFID = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"RFIDTAG", @"value", nil], nil];
[requestDictionary setObject:leadRFID forKey:@"field_rfid_id"];
// Set Lead phonetic
NSMutableArray *leadPhonetic = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"PRONOUNCE", @"value", nil], nil];
[requestDictionary setObject:leadPhonetic forKey:@"field_lead_phonetic"];
// Set lead field status
NSMutableArray *leadFieldStatus = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"2", @"value", nil], nil];
[requestDictionary setObject:leadFieldStatus forKey:@"field_lead_status"];
// Set Lead bizcard
NSMutableArray *leadBizCard = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"Biz Card", @"value", nil], nil];
[requestDictionary setObject:leadBizCard forKey:@"field_business_card"];
// Set Lead bizcard image
NSMutableArray *leadBizImg = [[NSMutableArray alloc] init];
[requestDictionary setObject:leadBizImg forKey:@"field_business_card_image"];
// Set Lead qualification
NSMutableArray *leadQualification = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"Priority 1 \u2013 Hot Lead, immediate action is required", @"value", nil], nil];
[requestDictionary setObject:leadQualification forKey:@"field_lead_qualification"];
// Set lead subscribe
NSMutableArray *leadSubscribe = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"SUBSCRIBE to Newsletter", @"value", nil], nil];
[requestDictionary setObject:leadSubscribe forKey:@"field_lead_subscribe"];
// Set Lead contact
NSMutableArray *leadContact = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"contact later", @"value", nil], nil];
[requestDictionary setObject:leadContact forKey:@"field_lead_contact"];
// Set Lead notes
NSMutableArray *leadNotes = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"<p>\r\n\tNotes here!</p>\r\n", @"value", nil], nil];
[requestDictionary setObject:leadNotes forKey:@"field_lead_notes"];
// Set Lead badge string
NSMutableArray *leadBadge = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"BADGE123", @"value", nil], nil];
[requestDictionary setObject:leadBadge forKey:@"field_badge_string"];
// Set Lead quiz string
NSMutableArray *leadQuiz = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"<p>\r\n\tquiz results!</p>\r\n", @"value", nil], nil];
[requestDictionary setObject:leadQuiz forKey:@"field_quiz_string"];
// Set Lead services
NSMutableArray *leadServices = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"Services Field", @"value", nil], nil];
[requestDictionary setObject:leadServices forKey:@"field_services"];
// Set Lead sales rep
NSMutableArray *leadSalesRep = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"Mr Sales Rep", @"value", nil], nil];
[requestDictionary setObject:leadSalesRep forKey:@"field_salesrep"];
// Set Lead request assets
if([data objectForKey:@"savedAssets"]){
NSMutableArray *leadRequestedAssets = [data objectForKey:@"savedAssets"];
[requestDictionary setObject:leadRequestedAssets forKey:@"field_lead_requested_assets"];
}
else{
NSMutableArray *leadRequestedAssets = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"19841", @"nid", nil], nil];
[requestDictionary setObject:leadRequestedAssets forKey:@"field_lead_requested_assets"];
}
// Set Lead og groups
NSMutableDictionary *leadOgGroups = [[NSMutableDictionary alloc] initWithObjectsAndKeys:[NSNumber numberWithInt:19018], @"19018", nil];
[requestDictionary setObject:leadOgGroups forKey:@"og_groups"];
// Set Lead og gropus both
NSMutableDictionary *leadOgGroupsBoth = [[NSMutableDictionary alloc] initWithObjectsAndKeys:@"Sparksight", @"19018", nil];
[requestDictionary setObject:leadOgGroupsBoth forKey:@"og_groups_both"];
// Set Lead webform
NSMutableDictionary *leadWebform = [[NSMutableDictionary alloc] initWithObjectsAndKeys:@"true", @"addblock", nil];
[requestDictionary setObject:leadWebform forKey:@"webform"];
// Set Lead og public
BOOL leadOgPublic = false;
[requestDictionary setObject:@"false" forKey:@"og_public"];
// Set Lead taxonomy
NSMutableArray *leadTaxonomy = [[NSMutableArray alloc] init];
[requestDictionary setObject:leadTaxonomy forKey:@"taxonomy"];
NSLog(@"Request Body: %@", requestDictionary);
由此打印的结果是:
Request Body: {
"field_badge_string" = (
{
value = "";
}
);
"field_business_card" = (
{
value = "";
}
);
"field_business_card_image" = (
{
"" = "";
}
);
"field_lead_add_1" = (
{
value = "";
}
);
"field_lead_add_2" = (
{
value = "";
}
);
"field_lead_city" = (
{
value = "";
}
);
"field_lead_company" = (
{
value = "";
}
);
"field_lead_contact" = (
{
value = "";
}
);
"field_lead_country" = (
{
value = "";
}
);
"field_lead_division" = (
{
value = "";
}
);
"field_lead_email" = (
{
value = "[email protected]";
}
);
"field_lead_event" = (
{
nid = 19018;
}
);
"field_lead_fax" = (
{
value = "";
}
);
"field_lead_first_name" = (
{
value = Michael;
}
);
"field_lead_job_title" = (
{
value = "";
}
);
"field_lead_last_name" = (
{
value = Sigsbey;
}
);
"field_lead_middle_name" = (
{
value = "";
}
);
"field_lead_notes" = (
{
value = "";
}
);
"field_lead_phone_1" = (
{
value = 5129147975;
}
);
"field_lead_phone_2" = (
{
value = "";
}
);
"field_lead_phonetic" = (
{
value = "";
}
);
"field_lead_qualification" = (
{
value = "";
}
);
"field_lead_requested_assets" = (
{
nid = 19037;
},
{
nid = 19035;
},
{
nid = 19031;
},
{
nid = 19021;
},
{
nid = 20503;
},
{
nid = 19351;
},
{
nid = 19034;
},
{
nid = 19033;
},
{
nid = 19036;
}
);
"field_lead_source" = (
{
nid = 19018;
}
);
"field_lead_state" = (
{
value = "";
}
);
"field_lead_status" = (
{
value = "";
}
);
"field_lead_subscribe" = (
{
value = "";
}
);
"field_lead_suffix" = (
{
value = "";
}
);
"field_lead_tags" = (
{
value = "";
}
);
"field_lead_title" = (
{
value = "My Title";
}
);
"field_lead_website" = (
{
value = "";
}
);
"field_lead_zip" = (
{
value = "";
}
);
"field_quiz_string" = (
{
value = "";
}
);
"field_rfid_id" = (
{
value = "";
}
);
"field_salesrep" = (
{
value = "";
}
);
"field_services" = (
{
value = "";
}
);
"og_groups" = {
19018 = 19018;
};
"og_groups_both" = {
19018 = Sparksight;
};
"og_public" = "";
status = 1;
taxonomy = (
{
"" = "";
}
);
type = lead;
webform = (
{
addblock = true;
}
);
}
我不明白为什么我会得到所有这些分号和括号,因为它们正在破坏我的 JSON 格式。我可以发布有效的方法(相同的过程,不同的应用程序),但真正的问题是为什么这种格式会关闭?
编辑:发布了以前应用程序的工作代码以显示输出的差异。
NSMutableDictionary* resultPerson = [[NSMutableDictionary alloc] init];
[resultPerson setObject:m_type forKey:@"type"];
[resultPerson setObject:m_status forKey:@"status"];
[resultPerson setObject:m_email forKey:@"field_lead_email"];
if(m_source)
[resultPerson setObject:m_source forKey:@"field_lead_source"];
if(m_event)
[resultPerson setObject:m_event forKey:@"field_lead_event"];
if(m_tags)
[resultPerson setObject:m_tags forKey:@"field_lead_tags"];
if(m_title)
[resultPerson setObject:m_title forKey:@"field_lead_title"];
if(m_firstName)
[resultPerson setObject:m_firstName forKey:@"field_lead_first_name"];
if(m_lastName)
[resultPerson setObject:m_lastName forKey:@"field_lead_last_name"];
if(m_middleName)
[resultPerson setObject:m_middleName forKey:@"field_lead_middle_name"];
if(m_suffix)
[resultPerson setObject:m_suffix forKey:@"field_lead_suffix"];
if(m_jobTitle)
[resultPerson setObject:m_jobTitle forKey:@"field_lead_job_title"];
if(m_company)
[resultPerson setObject:m_company forKey:@"field_lead_company"];
if(m_division)
[resultPerson setObject:m_division forKey:@"field_lead_division"];
if(m_address1)
[resultPerson setObject:m_address1 forKey:@"field_lead_add_1"];
if(m_address2)
[resultPerson setObject:m_address2 forKey:@"field_lead_add_2"];
if(m_city)
[resultPerson setObject:m_city forKey:@"field_lead_city"];
if(m_state)
[resultPerson setObject:m_state forKey:@"field_lead_state"];
if(m_country)
[resultPerson setObject:m_country forKey:@"field_lead_country"];
if(m_phone1)
[resultPerson setObject:m_phone1 forKey:@"field_lead_phone_1"];
if(m_phone2)
[resultPerson setObject:m_phone2 forKey:@"field_lead_phone_2"];
if(m_fax)
[resultPerson setObject:m_fax forKey:@"field_lead_fax"];
if(m_website)
[resultPerson setObject:m_website forKey:@"field_lead_website"];
if(m_zip)
[resultPerson setObject:m_zip forKey:@"field_lead_zip"];
if(m_rfid)
[resultPerson setObject:m_rfid forKey:@"field_rfid_id"];
if(m_phonetic)
[resultPerson setObject:m_phonetic forKey:@"field_lead_phonetic"];
if(m_leadStatus)
[resultPerson setObject:m_leadStatus forKey:@"field_lead_status"];
if(m_bizCard)
[resultPerson setObject:m_bizCard forKey:@"field_business_card"];
if(m_bizCardImg)
[resultPerson setObject:m_bizCardImg forKey:@"field_business_card_image"];
if(m_qualification)
[resultPerson setObject:m_qualification forKey:@"field_lead_qualification"];
if(m_subscribe)
[resultPerson setObject:m_subscribe forKey:@"field_lead_subscribe"];
if(m_contact)
[resultPerson setObject:m_contact forKey:@"field_lead_contact"];
if(m_notes)
[resultPerson setObject:m_notes forKey:@"field_lead_notes"];
if(m_badge)
[resultPerson setObject:m_badge forKey:@"field_badge_string"];
if(m_quiz)
[resultPerson setObject:m_quiz forKey:@"field_quiz_string"];
if(m_services)
[resultPerson setObject:m_services forKey:@"field_services"];
if(m_salesRep)
[resultPerson setObject:m_salesRep forKey:@"field_salesrep"];
if(m_requestedAssets)
[resultPerson setObject:m_requestedAssets forKey:@"field_lead_requested_assets"];
if(m_ogGroups)
[resultPerson setObject:m_ogGroups forKey:@"og_groups"];
if(m_ogGroupsBoth)
[resultPerson setObject:m_ogGroupsBoth forKey:@"og_groups_both"];
if(m_webform)
[resultPerson setObject:m_webform forKey:@"webform"];
[resultPerson setObject:[NSNumber numberWithInt:m_ogPublic] forKey:@"og_public"];
if(m_taxonomy)
[resultPerson setObject:m_taxonomy forKey:@"taxonomy"];
NSLog(@"Resulting Person data: %@", resultPerson);
结果是:
{"status":"1","field_lead_first_name":[{"value":"2"}],"field_lead_zip":[{"value":""}],"field_lead_requested_assets":[{"nid":"19839"}],"field_lead_email":[{"value":"[email protected]"}],"type":"lead","field_lead_title":[{"value":"Programmer"}],"og_public":0,"field_lead_last_name":[{"value":"Sigsbey"}],"field_lead_city":[{"value":"Austin"}],"field_lead_source":[{"nid":"19323"}],"field_lead_phone_1":[{"value":"5129147975"}],"field_lead_company":[{"value":"Sparksight"}],"field_lead_state":[{"value":"Tx"}],"field_lead_add_1":[{"value":""}]}
Okay, so here's the issue. I have two apps that need to package up JSON request data and send it to the server. The issue is that when I print the result from my NSMutableDictionary to be used as the JSON request body, I get different results from the different apps. I have the data formatted the same way, and can't figure out why I'm getting different results. Possibly it is a compiler setting? Or iOS version? Not sure what to even check at this point.
requestDictionary = [[NSMutableDictionary alloc] init];
// Set Lead type
NSString *leadType = @"lead";
[requestDictionary setObject:leadType forKey:@"type"];
// Set Lead status
NSString *leadStatus = @"1";
[requestDictionary setObject:leadStatus forKey:@"status"];
// Set Lead email
if([data objectForKey:@"email"]){
m_leadEmail = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:[data objectForKey:@"email"], @"value", nil], nil];
[requestDictionary setObject:m_leadEmail forKey:@"field_lead_email"];
}
else{
NSMutableArray *leadEmail = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"[email protected]", @"value", nil], nil];
[requestDictionary setObject:leadEmail forKey:@"field_lead_email"];
}
NSLog(@"Email field: %@", m_leadEmail);
// Set Lead source
NSMutableArray *leadSource = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"19018", @"nid", nil], nil];
[requestDictionary setObject:leadSource forKey:@"field_lead_source"];
// Set Lead event
NSMutableArray *leadEvent = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"19018", @"nid", nil], nil];
[requestDictionary setObject:leadEvent forKey:@"field_lead_event"];
// Set Lead tags
NSMutableArray *leadTags = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"", @"value", nil], nil];
[requestDictionary setObject:leadTags forKey:@"field_lead_tags"];
// Set Lead title
NSMutableArray *leadTitle = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"My Title", @"value", nil], nil];
[requestDictionary setObject:leadTitle forKey:@"field_lead_title"];
// Set Lead first name
if([data objectForKey:@"firstName"]){
NSMutableArray *leadFirstName = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:[data objectForKey:@"firstName"], @"value", nil], nil];
[requestDictionary setObject:leadFirstName forKey:@"field_lead_first_name"];
}
else{
NSMutableArray *leadFirstName = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"TestLead", @"value", nil], nil];
[requestDictionary setObject:leadFirstName forKey:@"field_lead_first_name"];
}
// Set Lead last name
if([data objectForKey:@"lastName"]){
NSMutableArray *leadLastName = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:[data objectForKey:@"lastName"], @"value", nil], nil];
[requestDictionary setObject:leadLastName forKey:@"field_lead_last_name"];
}
else{
NSMutableArray *leadLastName = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"Tester", @"value", nil], nil];
[requestDictionary setObject:leadLastName forKey:@"field_lead_last_name"];
}
// Set Lead middle name
NSMutableArray *leadMidName = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"MiddleName", @"value", nil], nil];
[requestDictionary setObject:leadMidName forKey:@"field_lead_middle_name"];
// Set Lead suffix
NSMutableArray *leadSuffix = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"Mr.", @"value", nil], nil];
[requestDictionary setObject:leadSuffix forKey:@"field_lead_suffix"];
// Set Lead job title
NSMutableArray *leadJobTitle = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"Job Title", @"value", nil], nil];
[requestDictionary setObject:leadJobTitle forKey:@"field_lead_job_title"];
// Set Lead company
NSMutableArray *leadCompany = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"MyCompany", @"value", nil], nil];
[requestDictionary setObject:leadCompany forKey:@"field_lead_company"];
// Set Lead division
NSMutableArray *leadDivision = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"My Division", @"value", nil], nil];
[requestDictionary setObject:leadDivision forKey:@"field_lead_division"];
// Set Lead add1
NSMutableArray *leadAdd1 = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"123 Anywhere Street", @"value", nil], nil];
[requestDictionary setObject:leadAdd1 forKey:@"field_lead_add1"];
// Set Lead add2
NSMutableArray *leadAdd2 = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"Address 2", @"value", nil], nil];
[requestDictionary setObject:leadAdd2 forKey:@"field_lead_add2"];
// Set Lead city
NSMutableArray *leadCity = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"Austin", @"value", nil], nil];
[requestDictionary setObject:leadCity forKey:@"field_lead_city"];
// Set Lead state
NSMutableArray *leadState = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"TX", @"value", nil], nil];
[requestDictionary setObject:leadState forKey:@"field_lead_state"];
// Set Lead country
NSMutableArray *leadCountry = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"USA", @"value", nil], nil];
[requestDictionary setObject:leadCountry forKey:@"field_lead_country"];
// Set Lead phone1
if([data objectForKey:@"phoneNumber"]){
NSMutableArray *leadPhone1 = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:[data objectForKey:@"phoneNumber"], @"value", nil], nil];
[requestDictionary setObject:leadPhone1 forKey:@"field_lead_phone_1"];
}
else{
NSMutableArray *leadPhone1 = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"555-555-1212", @"value", nil], nil];
[requestDictionary setObject:leadPhone1 forKey:@"field_lead_phone_1"];
}
// Set Lead phone2
NSMutableArray *leadPhone2 = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"555-555-1234", @"value", nil], nil];
[requestDictionary setObject:leadPhone2 forKey:@"field_lead_phone_2"];
// Set Lead fax
NSMutableArray *leadFax = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"555-555-1111", @"value", nil], nil];
[requestDictionary setObject:leadFax forKey:@"field_lead_fax"];
// Set Lead website
NSMutableArray *leadWebsite = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"http://sparksight.com", @"value", nil], nil];
[requestDictionary setObject:leadWebsite forKey:@"field_lead_website"];
// Set Lead zip
NSMutableArray *leadZip = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"78759", @"value", nil], nil];
[requestDictionary setObject:leadZip forKey:@"field_lead_zip"];
// Set Lead RFID
NSMutableArray *leadRFID = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"RFIDTAG", @"value", nil], nil];
[requestDictionary setObject:leadRFID forKey:@"field_rfid_id"];
// Set Lead phonetic
NSMutableArray *leadPhonetic = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"PRONOUNCE", @"value", nil], nil];
[requestDictionary setObject:leadPhonetic forKey:@"field_lead_phonetic"];
// Set lead field status
NSMutableArray *leadFieldStatus = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"2", @"value", nil], nil];
[requestDictionary setObject:leadFieldStatus forKey:@"field_lead_status"];
// Set Lead bizcard
NSMutableArray *leadBizCard = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"Biz Card", @"value", nil], nil];
[requestDictionary setObject:leadBizCard forKey:@"field_business_card"];
// Set Lead bizcard image
NSMutableArray *leadBizImg = [[NSMutableArray alloc] init];
[requestDictionary setObject:leadBizImg forKey:@"field_business_card_image"];
// Set Lead qualification
NSMutableArray *leadQualification = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"Priority 1 \u2013 Hot Lead, immediate action is required", @"value", nil], nil];
[requestDictionary setObject:leadQualification forKey:@"field_lead_qualification"];
// Set lead subscribe
NSMutableArray *leadSubscribe = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"SUBSCRIBE to Newsletter", @"value", nil], nil];
[requestDictionary setObject:leadSubscribe forKey:@"field_lead_subscribe"];
// Set Lead contact
NSMutableArray *leadContact = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"contact later", @"value", nil], nil];
[requestDictionary setObject:leadContact forKey:@"field_lead_contact"];
// Set Lead notes
NSMutableArray *leadNotes = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"<p>\r\n\tNotes here!</p>\r\n", @"value", nil], nil];
[requestDictionary setObject:leadNotes forKey:@"field_lead_notes"];
// Set Lead badge string
NSMutableArray *leadBadge = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"BADGE123", @"value", nil], nil];
[requestDictionary setObject:leadBadge forKey:@"field_badge_string"];
// Set Lead quiz string
NSMutableArray *leadQuiz = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"<p>\r\n\tquiz results!</p>\r\n", @"value", nil], nil];
[requestDictionary setObject:leadQuiz forKey:@"field_quiz_string"];
// Set Lead services
NSMutableArray *leadServices = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"Services Field", @"value", nil], nil];
[requestDictionary setObject:leadServices forKey:@"field_services"];
// Set Lead sales rep
NSMutableArray *leadSalesRep = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"Mr Sales Rep", @"value", nil], nil];
[requestDictionary setObject:leadSalesRep forKey:@"field_salesrep"];
// Set Lead request assets
if([data objectForKey:@"savedAssets"]){
NSMutableArray *leadRequestedAssets = [data objectForKey:@"savedAssets"];
[requestDictionary setObject:leadRequestedAssets forKey:@"field_lead_requested_assets"];
}
else{
NSMutableArray *leadRequestedAssets = [[NSMutableArray alloc] initWithObjects:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"19841", @"nid", nil], nil];
[requestDictionary setObject:leadRequestedAssets forKey:@"field_lead_requested_assets"];
}
// Set Lead og groups
NSMutableDictionary *leadOgGroups = [[NSMutableDictionary alloc] initWithObjectsAndKeys:[NSNumber numberWithInt:19018], @"19018", nil];
[requestDictionary setObject:leadOgGroups forKey:@"og_groups"];
// Set Lead og gropus both
NSMutableDictionary *leadOgGroupsBoth = [[NSMutableDictionary alloc] initWithObjectsAndKeys:@"Sparksight", @"19018", nil];
[requestDictionary setObject:leadOgGroupsBoth forKey:@"og_groups_both"];
// Set Lead webform
NSMutableDictionary *leadWebform = [[NSMutableDictionary alloc] initWithObjectsAndKeys:@"true", @"addblock", nil];
[requestDictionary setObject:leadWebform forKey:@"webform"];
// Set Lead og public
BOOL leadOgPublic = false;
[requestDictionary setObject:@"false" forKey:@"og_public"];
// Set Lead taxonomy
NSMutableArray *leadTaxonomy = [[NSMutableArray alloc] init];
[requestDictionary setObject:leadTaxonomy forKey:@"taxonomy"];
NSLog(@"Request Body: %@", requestDictionary);
The result printed from this is:
Request Body: {
"field_badge_string" = (
{
value = "";
}
);
"field_business_card" = (
{
value = "";
}
);
"field_business_card_image" = (
{
"" = "";
}
);
"field_lead_add_1" = (
{
value = "";
}
);
"field_lead_add_2" = (
{
value = "";
}
);
"field_lead_city" = (
{
value = "";
}
);
"field_lead_company" = (
{
value = "";
}
);
"field_lead_contact" = (
{
value = "";
}
);
"field_lead_country" = (
{
value = "";
}
);
"field_lead_division" = (
{
value = "";
}
);
"field_lead_email" = (
{
value = "[email protected]";
}
);
"field_lead_event" = (
{
nid = 19018;
}
);
"field_lead_fax" = (
{
value = "";
}
);
"field_lead_first_name" = (
{
value = Michael;
}
);
"field_lead_job_title" = (
{
value = "";
}
);
"field_lead_last_name" = (
{
value = Sigsbey;
}
);
"field_lead_middle_name" = (
{
value = "";
}
);
"field_lead_notes" = (
{
value = "";
}
);
"field_lead_phone_1" = (
{
value = 5129147975;
}
);
"field_lead_phone_2" = (
{
value = "";
}
);
"field_lead_phonetic" = (
{
value = "";
}
);
"field_lead_qualification" = (
{
value = "";
}
);
"field_lead_requested_assets" = (
{
nid = 19037;
},
{
nid = 19035;
},
{
nid = 19031;
},
{
nid = 19021;
},
{
nid = 20503;
},
{
nid = 19351;
},
{
nid = 19034;
},
{
nid = 19033;
},
{
nid = 19036;
}
);
"field_lead_source" = (
{
nid = 19018;
}
);
"field_lead_state" = (
{
value = "";
}
);
"field_lead_status" = (
{
value = "";
}
);
"field_lead_subscribe" = (
{
value = "";
}
);
"field_lead_suffix" = (
{
value = "";
}
);
"field_lead_tags" = (
{
value = "";
}
);
"field_lead_title" = (
{
value = "My Title";
}
);
"field_lead_website" = (
{
value = "";
}
);
"field_lead_zip" = (
{
value = "";
}
);
"field_quiz_string" = (
{
value = "";
}
);
"field_rfid_id" = (
{
value = "";
}
);
"field_salesrep" = (
{
value = "";
}
);
"field_services" = (
{
value = "";
}
);
"og_groups" = {
19018 = 19018;
};
"og_groups_both" = {
19018 = Sparksight;
};
"og_public" = "";
status = 1;
taxonomy = (
{
"" = "";
}
);
type = lead;
webform = (
{
addblock = true;
}
);
}
I can't figure out why I'm getting all these semicolons and parens as they are destroying my JSON formatting. I can post the method that works (same process, different app), but really the issue is why is this formatting off?
Edit: Posted working code from previous app to show difference in output.
NSMutableDictionary* resultPerson = [[NSMutableDictionary alloc] init];
[resultPerson setObject:m_type forKey:@"type"];
[resultPerson setObject:m_status forKey:@"status"];
[resultPerson setObject:m_email forKey:@"field_lead_email"];
if(m_source)
[resultPerson setObject:m_source forKey:@"field_lead_source"];
if(m_event)
[resultPerson setObject:m_event forKey:@"field_lead_event"];
if(m_tags)
[resultPerson setObject:m_tags forKey:@"field_lead_tags"];
if(m_title)
[resultPerson setObject:m_title forKey:@"field_lead_title"];
if(m_firstName)
[resultPerson setObject:m_firstName forKey:@"field_lead_first_name"];
if(m_lastName)
[resultPerson setObject:m_lastName forKey:@"field_lead_last_name"];
if(m_middleName)
[resultPerson setObject:m_middleName forKey:@"field_lead_middle_name"];
if(m_suffix)
[resultPerson setObject:m_suffix forKey:@"field_lead_suffix"];
if(m_jobTitle)
[resultPerson setObject:m_jobTitle forKey:@"field_lead_job_title"];
if(m_company)
[resultPerson setObject:m_company forKey:@"field_lead_company"];
if(m_division)
[resultPerson setObject:m_division forKey:@"field_lead_division"];
if(m_address1)
[resultPerson setObject:m_address1 forKey:@"field_lead_add_1"];
if(m_address2)
[resultPerson setObject:m_address2 forKey:@"field_lead_add_2"];
if(m_city)
[resultPerson setObject:m_city forKey:@"field_lead_city"];
if(m_state)
[resultPerson setObject:m_state forKey:@"field_lead_state"];
if(m_country)
[resultPerson setObject:m_country forKey:@"field_lead_country"];
if(m_phone1)
[resultPerson setObject:m_phone1 forKey:@"field_lead_phone_1"];
if(m_phone2)
[resultPerson setObject:m_phone2 forKey:@"field_lead_phone_2"];
if(m_fax)
[resultPerson setObject:m_fax forKey:@"field_lead_fax"];
if(m_website)
[resultPerson setObject:m_website forKey:@"field_lead_website"];
if(m_zip)
[resultPerson setObject:m_zip forKey:@"field_lead_zip"];
if(m_rfid)
[resultPerson setObject:m_rfid forKey:@"field_rfid_id"];
if(m_phonetic)
[resultPerson setObject:m_phonetic forKey:@"field_lead_phonetic"];
if(m_leadStatus)
[resultPerson setObject:m_leadStatus forKey:@"field_lead_status"];
if(m_bizCard)
[resultPerson setObject:m_bizCard forKey:@"field_business_card"];
if(m_bizCardImg)
[resultPerson setObject:m_bizCardImg forKey:@"field_business_card_image"];
if(m_qualification)
[resultPerson setObject:m_qualification forKey:@"field_lead_qualification"];
if(m_subscribe)
[resultPerson setObject:m_subscribe forKey:@"field_lead_subscribe"];
if(m_contact)
[resultPerson setObject:m_contact forKey:@"field_lead_contact"];
if(m_notes)
[resultPerson setObject:m_notes forKey:@"field_lead_notes"];
if(m_badge)
[resultPerson setObject:m_badge forKey:@"field_badge_string"];
if(m_quiz)
[resultPerson setObject:m_quiz forKey:@"field_quiz_string"];
if(m_services)
[resultPerson setObject:m_services forKey:@"field_services"];
if(m_salesRep)
[resultPerson setObject:m_salesRep forKey:@"field_salesrep"];
if(m_requestedAssets)
[resultPerson setObject:m_requestedAssets forKey:@"field_lead_requested_assets"];
if(m_ogGroups)
[resultPerson setObject:m_ogGroups forKey:@"og_groups"];
if(m_ogGroupsBoth)
[resultPerson setObject:m_ogGroupsBoth forKey:@"og_groups_both"];
if(m_webform)
[resultPerson setObject:m_webform forKey:@"webform"];
[resultPerson setObject:[NSNumber numberWithInt:m_ogPublic] forKey:@"og_public"];
if(m_taxonomy)
[resultPerson setObject:m_taxonomy forKey:@"taxonomy"];
NSLog(@"Resulting Person data: %@", resultPerson);
With a result of:
{"status":"1","field_lead_first_name":[{"value":"2"}],"field_lead_zip":[{"value":""}],"field_lead_requested_assets":[{"nid":"19839"}],"field_lead_email":[{"value":"[email protected]"}],"type":"lead","field_lead_title":[{"value":"Programmer"}],"og_public":0,"field_lead_last_name":[{"value":"Sigsbey"}],"field_lead_city":[{"value":"Austin"}],"field_lead_source":[{"nid":"19323"}],"field_lead_phone_1":[{"value":"5129147975"}],"field_lead_company":[{"value":"Sparksight"}],"field_lead_state":[{"value":"Tx"}],"field_lead_add_1":[{"value":""}]}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
正如评论所指出的,字典的
NSLog
不保证具有任何特定的格式。因此,它可能会在 iOS 版本之间发生变化。您最好做的可能是:
NSJSONSerialization
+dataWithJSONObject:options:error:
;如果您构建字典只是为了转换为 JSON,您甚至可以考虑只构建 JSON 字符串而不是字典。
As comments have pointed out, the
NSLog
of a dictionary is not guaranteed to have any particular format. It therefore may change between iOS versions.What you'd probably be best doing is:
NSJSONSerialization
+dataWithJSONObject:options:error:
;If you're building the dictionary only to turn into JSON, you might even consider just building the JSON string instead of the dictionary.
所以,事实证明这不是 JSON 解析或 NSDictionary 的设置。该问题最终与服务器相关(后端连接中断)。不管怎样,感谢所有的帮助!
So, turns out it wasn't the JSON parsing or the setup of the NSDictionary. The issue ended up being server related (connections broken on the backend). Thanks for all the help regardless!