Objective-C 和 swift 之间的编码不匹配

Encode between Objective-C and swift, does not match

我的应用程序的网络请求已编码。

在Objective-C

NSData *encodeData = [str dataUsingEncoding:NSUTF8StringEncoding];
dataStr = [encodeData base64EncodedStringWithOptions:0];

我想把它改成swift。 这是 swift 代码:

let dataEncodeTemp = dataTempStr.data(using: String.Encoding.utf8)
let dataStr = dataEncodeTemp?.base64EncodedString(options: Data.Base64EncodingOptions(rawValue: 0))

我想,结果应该是一样的。但事实并非如此。

Objective-C数据:

(lldb) po str// initial
{"userType":2,"password":"qazwsx2","account":"15921810000"}

(lldb) po dataStr // encoded
eyJ1c2VyVHlwZSI6MiwicGFzc3dvcmQiOiJxYXp3c3gyIiwiYWNjb3VudCI6IjE1OTIxODE3MDUzIn0=

swift数据:

po dataTempStr // initial
"{\"userType\":2,\"account\":\"15921810000\",\"password\":\"qazwsx2\"}"

(lldb) po dataStr

▿ Optional<String> // encoded
  - some : "eyJ1c2VyVHlwZSI6MiwiYWNjb3VudCI6IjE1OTIxODE3MDUzIiwicGFzc3dvcmQiOiJxYXp3c3gyIn0="

想知道为什么,求解决。

我要试试桥。

有什么好的解决办法吗?

它们永远不会匹配,因为这两个字符串的 JSON 键的顺序不同;一个是 userTypepasswordaccount;另一个是 userType, account, password.