Objective c 如何在iOS和Rails上获得相同的JSON字符串输出?

Objective c 如何在iOS和Rails上获得相同的JSON字符串输出?,objective-c,ruby,json,string,character-encoding,Objective C,Ruby,Json,String,Character Encoding,我在iOS上有一个JSON文档,在Rails上有一个相同的文档。当我在iOS上序列化它时,我需要它是一个字符对一个字符,相当于Rails中的序列化字符串。然而,当我尝试这一点时,输出基本相同,但并不完全相同 在iOS上: id jsonObj; NSData *jsonData = [NSJSONSerialization dataWithJSONObject:jsonObj options:0 error:nil]; NSString *string = [[NSString alloc] i

我在iOS上有一个JSON文档,在Rails上有一个相同的文档。当我在iOS上序列化它时,我需要它是一个字符对一个字符,相当于Rails中的序列化字符串。然而,当我尝试这一点时,输出基本相同,但并不完全相同

在iOS上:

id jsonObj;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:jsonObj options:0 error:nil];
NSString *string = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
在Ruby方面:

jsonObj // contains exactly the same content as the objc version
string = JSON.generate(jsonObj)
我遇到的问题是Ruby的JSON.generate()没有以与iOS上的NSJSONSerialization相同的格式输出JSON字符串。有没有办法让他们表现得一样?或者,我是否可以使用其他序列化方法在iOS和Rails上获得一致的结果

我发现两者之间的一个区别是原始对象中有文本“N/A”。Rails按原样输出,而iOS将其转义为“N\/A”。我是否可以在iOS端使用另一个字符串编码选项来修复此问题

编辑:

这里有一个更好的例子:

id json = @{ @"str": @"N/A" };
NSError *error = nil;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:json options:0 error:&error];
NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];

NSLog(@"jsonString = '%@'", jsonString);
// prints "jsonString = '{"str":"N\/A"}'"
和ruby等价物:

json = { "str" => "N/A" }
jsonString = JSON.generate(json)
puts "jsonString = '#{jsonString}'"
// prints "jsonString = '{"str":"N/A"}'"

我还将这两个输出写入文件,并再次进行比较,结果相同。

您是如何发现输出不同的?我在iOS上创建了一个对象(NSStrings的NSDictionary),并将其json输出与ruby端相同内容的json输出(字符串散列)进行了比较。我认为这是一个字符串编码问题,但我不确定如何解决它。我认为这是一个字符串显示问题,而不是字符串内容问题。我只是编辑了这个问题,以提供更好的示例代码。起初我认为这可能也是一个显示问题,但我将这两个文件都写到了文件中,然后对它们进行了比较,发现它们是不同的。