如何在Swift中编码后获得所需的JSON结构

时间:2017-11-28 16:23:28

标签: json swift

我有一个结构名称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",

                }

1 个答案:

答案 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"