2
我試圖使用JSON將圖像發送到服務器。 的數據仍然是正確的,直到在那裏設置我的字典與NSJSONSerialization編碼: 功能使用:使用NSJSONSerialization編碼的Base64字符串被反斜槓轉義
- (NSData*) getHTTPBody
{
if ([NSJSONSerialization isValidJSONObject:jsonMessage])
{
NSError * error = Nil;
NSData * jsonData = [NSJSONSerialization dataWithJSONObject:jsonMessage options:0 error:&error];
NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
return jsonData;
}
return Nil;
}
具有以下輸入:
Printing description of self->jsonMessage:
{
function = addattachment;
variables = {
attachment = {
enddate = 1377475200000;
file = "/9j/4AAQSkZJRgABAQAAAQABAAD/4QBYRXhpZgAATU0AKgAAAAgAAgESAAMAAAABAAEAAIdpAAQAAAABAAAAJgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAEKADAAQAAAABAAAAEAAAAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/wAARCAAQABADAREAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD+gb9oH9pvRf29Nb+JX7Pnwq+LHj74bfB/wXDpcHirxz8Pv2fvih8d7v4tXepXepW0+irF8MVa48LeALQ6fg3Oq7V+ISPKtv8A8U7ZSnV/6v4c4QxXgxhsj4wz/hzA53nuZVKjwmWY7OMPlKyiNGLvNTr8yxOKmnD2nLG9FScaTS551/8APLjfxOyb6SGI4h8PuGuLsTw1wvlsMO8XmFHJ8RmbzdVJRnFSp2hPDUqM01Btrnkk5q7iqfUfBf43Qf8ABO3/AIUd8G/i/wDGDXPih8EfjFY+I7jwD408V/DHxP8ACfxL8G38P3+h2S6L4n8N+MtUvfE3/CH31xrQMZ1iz0W88FokSvZ3fh6+jfSePiHh/EeOEuIeJeHuHaOQcQ5U6TxmW4XHLMKebKrTjKM44mMKdFYpRUlCSjL2rgqVSatGVD0eCeN8u+jPDhjg3iPjJ8S8H55HFvLcdVy94Cpk8qFSbrqWHTnXq06tS91K3JKcpQi9VUPjR8EYP+Cdv/C8vjJ8IPhBrnxQ+CPxisfDlt4+8F+FPid4m+E/iX4OP4fv9cvTrXhjxJ4N0u98T/8ACH31xrRDjR7zRbzwWiysl5d+Hr6RNIOHuIa/jhLh7hriHiOjkHEGVOqsHmWLwMcwp5tGrTlGUJ4aVSFGOKUUnOLlL2rg6tOCtKNBcbcEZd9GenxPxlw5wa+JeD88jhFmWBpZg8BUyeWHqRVFxxMoyr1adWronG3JJqM5OydXlv2fv2ZdF/bz1v4bftB/FX4T+Pvht8H/AAXDqs/hXwN8Qf2gfih8d7v4tXWo3em3MGtGX4nM1x4W8AWh0/IttJ2r8Q0eJpx/wjtlENX7OI+L8V4MYbPOD8g4iwOd57mNSmsXmeCyfD5QsoVGKtBwoc6xGKmnP2fNK9HmUqqSUIVvO4I8Mcm+kfX4f8QuJeEMTw3wvlsMSsJl1fOK+ZvN1VlKEuWpeM8NSozSclb35JqLu5On/9k=";
filename = "photo.jpg";
label = "Bhhhb ";
startdate = 1377475200000;
};
};
}
這似乎是正確的。實際上,我測試了Base64字符串,並將它轉換回在線解碼器上,它的工作原理完美無缺。
無論如何,生成了JSON NSData對象。從測試目的來說,我將它轉換回NSString。這是結果:
Printing description of jsonString:
{"variables":
{"attachment":
{"enddate":1377475200000,
"filename":"photo.jpg",
"label":"Bhhhb ",
"file":"\/9j\/4AAQSkZJRgABAQAAAQABAAD\/4QBYRXhpZgAATU0AKgAAAAgAAgESAAMAAAABAAEAAIdpAAQAAAABAAAAJgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAEKADAAQAAAABAAAAEAAAAAD\/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH\/2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH\/wAARCAAQABADAREAAhEBAxEB\/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL\/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6\/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL\/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6\/9oADAMBAAIRAxEAPwD+gb9oH9pvRf29Nb+JX7Pnwq+LHj74bfB\/wXDpcHirxz8Pv2fvih8d7v4tXepXepW0+irF8MVa48LeALQ6fg3Oq7V+ISPKtv8A8U7ZSnV\/6v4c4QxXgxhsj4wz\/hzA53nuZVKjwmWY7OMPlKyiNGLvNTr8yxOKmnD2nLG9FScaTS551\/8APLjfxOyb6SGI4h8PuGuLsTw1wvlsMO8XmFHJ8RmbzdVJRnFSp2hPDUqM01Btrnkk5q7iqfUfBf43Qf8ABO3\/AIUd8G\/i\/wDGDXPih8EfjFY+I7jwD408V\/DHxP8ACfxL8G38P3+h2S6L4n8N+MtUvfE3\/CH31xrQMZ1iz0W88FokSvZ3fh6+jfSePiHh\/EeOEuIeJeHuHaOQcQ5U6TxmW4XHLMKebKrTjKM44mMKdFYpRUlCSjL2rgqVSatGVD0eCeN8u+jPDhjg3iPjJ8S8H55HFvLcdVy94Cpk8qFSbrqWHTnXq06tS91K3JKcpQi9VUPjR8EYP+Cdv\/C8vjJ8IPhBrnxQ+CPxisfDlt4+8F+FPid4m+E\/iX4OP4fv9cvTrXhjxJ4N0u98T\/8ACH31xrRDjR7zRbzwWiysl5d+Hr6RNIOHuIa\/jhLh7hriHiOjkHEGVOqsHmWLwMcwp5tGrTlGUJ4aVSFGOKUUnOLlL2rg6tOCtKNBcbcEZd9GenxPxlw5wa+JeD88jhFmWBpZg8BUyeWHqRVFxxMoyr1adWronG3JJqM5OydXlv2fv2ZdF\/bz1v4bftB\/FX4T+Pvht8H\/AAXDqs\/hXwN8Qf2gfih8d7v4tXWo3em3MGtGX4nM1x4W8AWh0\/IttJ2r8Q0eJpx\/wjtlENX7OI+L8V4MYbPOD8g4iwOd57mNSmsXmeCyfD5QsoVGKtBwoc6xGKmnP2fNK9HmUqqSUIVvO4I8Mcm+kfX4f8QuJeEMTw3wvlsMSsJl1fOK+ZvN1VlKEuWpeM8NSozSclb35JqLu5On\/9k=",
"startdate":1377475200000}
},
"function":"addattachment"}
原始base64中的所有斜線(/)都是反斜槓()轉義。因此數據已損壞。 有沒有讓JSONSerialization知道不能逃避字符串的選項?
非常感謝提前。
由於調試器顯示字符串數據的方式,我認爲字符只能被轉義。你基本上將看到的數據看作是一個C字符串文字。反斜槓可能不存在於真實數據中。 –
你說得對。我進一步調試,我從服務器檢索有效的JSON,但是,我的圖像已損壞,但我不知道爲什麼。它似乎是一個服務器問題(我期待從服務器返回相同的Base64,因爲我交付了...但它沒有) – Reneger