nSDictionaryをjson文字列に変換したいのですが、すべてが正常に機能しています。次のように小さな問題があります。
-(NSString *)dictToJson:(NSDictionary *)dict
{
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dict options:NSJSONWritingPrettyPrinted error:nil];
return [[NSString alloc] initWithBytes:[jsonData bytes] length:[jsonData length] encoding:NSUTF8StringEncoding];
}
私はメソッドを次のように呼び出しています:
NSLog(@"%@", [self dictToJson:@{@"hello" : @"21/11/2014 10:07:42 AM"}]);
以下は、このNSLogの出力です。
{
"hello" : "21\/11\/2014 10:07:42 AM"
}
次の出力を期待していますが、どのようにして達成できますか?
{
"hello" : "21/11/2014 10:07:42 AM"
}
stringByReplacingOccurrencesOfString
メソッドを使用して実行できますが、これを使用したくありません。同じことを達成する他の方法はありますか?
JSONオブジェクトを文字列に変換すると、スラッシュがエスケープされます。そのため、バックスラッシュが結果に追加されます。
文字列をJSONオブジェクトに変換してログに記録すると、期待どおりの結果が得られます。したがって、文字列に問題はないことを確認できます。
Nsdictionary-to-string
NSError * err;
NSData * jsonData = [NSJSONSerialization dataWithJSONObject:response options:0 error:&err];
NSString * myString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
string-to-NSDictionary
NSError * err;
NSDictionary * response = (NSDictionary *)[NSJSONSerialization JSONObjectWithData:[NSData dataFromString:str] options:NSJSONReadingMutableContainers error:&err];
これを試して、
NSData *json = [NSJSONSerialization dataWithJSONObject:dict
options:0
error:&error];
NSString *jsonString = [[NSString alloc] initWithData:json encoding:NSUTF8StringEncoding];
// This will be the json string in the preferred format
jsonString = [jsonString stringByReplacingOccurrencesOfString:@"\\/" withString:@"/"];
// And this will be the json data object
NSData *processedData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
PrettyPrintedオプションを使用してDataへの応答に変換し、次にutf8エンコーディングコードを使用してDataを文字列に変換します。
NSDictionary *dictResponse = responseObject[0];
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dictResponse options:NSJSONWritingPrettyPrinted error:nil];
NSString * myString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
これを追加
-(NSString*) bv_jsonStringWithPrettyPrint:(BOOL) prettyPrint;
-(NSString *)dictToJson:(NSDictionary *)dict {
NSData *jsonData = [NSJSONSerialization dataWithJSONObject: dict
options:(NSJSONWritingOptions) (prettyPrint ? NSJSONWritingPrettyPrinted : 0)
error:&error];
if (!jsonData) {
NSLog(@"bv_jsonStringWithPrettyPrint: error: %@", error.localizedDescription);
return @"{}";
} else {
return [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
}
}
これを参照してください iOSのNSDictionaryからJSON文字列を生成