将集合的字典转换为JSON对象

时间:2019-10-17 12:55:29

标签: json swift dictionary

我正在尝试构建如下形式的请求正文:

{
    "user": {
        "id": 1, 
        "id": 2,
        "id": 4
    }
}

我的第一个想法是从字符串构建json并将其转换为字典String和Any,但是此解决方案存在问题。 JSONSerialization步骤进行转换时缺少一些“ id”。

我尝试使用:

var dictionary: [String : Any] = ["name" : "John"]()
var selectedIDs = Set<NSDictionary>()

// Adding values to selectedIDs set
let userIDDict = ["id" : id] as NSDictionary
selectedIDs.insert(userIDDict)

dictionary.updateValue(selectedIDs, forKey: "user")

但是不能通过JSONSerialization(JSON写入中的无效类型)进行强制转换。 我该如何解决所面临的问题?

1 个答案:

答案 0 :(得分:1)

创建此请求不是问题;它只是不正确的JSON,因此您不应尝试使用#[...] import gnn 1.0 ApplicationWindow { ListView{ id: rect function f(){ for (var i = 0; i < array.lenght(); ++i){ Rectangle { x: array[i][0] y: array[i][1] } } } } MouseArea{ onClicked: rects() } NN{ id: nn signal getRectangles(var array) // not working Component.onCompleted: { nn.rectanglePosChanged.connect(getRectangles) } } Connections { target: nn onGetRectangles: { } } } 。这只是一个字符串,因此您可以创建该字符串:

JSONSerialization

===>

let idKeyValues = ids.map { "\"id\": \($0)" }.joined(separator: ",\n        ")

let request = """
{
    "user": {
        \(idKeyValues)
    }
}
"""

用JSON表示的正确方法是:

{
    "user": {
        "id": 1,
        "id": 2,
        "id": 4
    }
}

有了这个,{ "user": { "ids": [1, 2, 4] } } 的实现应该非常简单。