我正在尝试构建如下形式的请求正文:
{
"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写入中的无效类型)进行强制转换。 我该如何解决所面临的问题?
答案 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]
}
}
的实现应该非常简单。