我有一个结构名称OpaqueData。我想将该对象转换为JSON,如下面的结构所示。
{
"dataDescriptor": "Some Text",
"dataValue": "Some Text"
}
OpaqueData的Strcut模型如下。
struct OpaqueData: Codable {
let dataDescriptor: String
let dataValue: String
}
编码到json对象后,dataValue属性首先出现,数据描述符排在第二位。在将strcut模型编码为json之后,如何获得所需的JSON结构。
let opaqueData = OpaqueData(dataDescriptor:"some text",dataValue: "some text")
let encodedData = try? JSONEncoder().encode(opaqueData)
let jsonString = String(data: encodedData!, encoding: .utf8)
print(jsonString!)
打印的json字符串看起来像这样。
{
"dataValue": "some text"
"dataDescriptor": "some text",
}
答案 0 :(得分:1)
如果您想输出您订购的json字典字符串,您需要将编码器outputFormatting
属性设置为.sortedKeys
:
struct OpaqueData: Codable {
let dataDescriptor: String
let dataValue: String
}
let opaqueData = OpaqueData(dataDescriptor:"some text", dataValue: "some text")
let encoder = JSONEncoder()
encoder.outputFormatting = .sortedKeys
let encodedData = try! encoder.encode(opaqueData)
let jsonString = String(data: encodedData, encoding: .utf8)!
print(jsonString) // "{"dataDescriptor":"some text","dataValue":"some text"}\n"