我怎么能有一本Swift4的可编码词典呢



我目前正在向后端发送一组字典,如下所示-

"args": [
{
"mobileData" =     {
"accessState" = 1;
"changeState" = 0;
};
},
{
"bluetooth" =     {
"accessState" = 1;
"changeState" = 0;
};
}]

我使用Swift4可编码协议对这些进行编码/解码,效果很好。

然而,后端期望整个args作为一个对象(字典(,其中包含所有其他KVP(例如,mobileData、蓝牙等(,如以下-

"args":{  
"mobileData":{  
"accessState":1, 
"changeState":0
},
"bluetooth" =     {
"accessState" = 1;
"changeState" = 0;
};
}

我不知道如何使用Swift可编码协议来创建这样的东西,而不将"args"中的"value"设为字符串。如有任何帮助,我们将不胜感激。我是不是错过了一些显而易见的东西?

每个字典都由一个结构表示。像这样:

struct States:Encodable {
let accessState:Int
let changeState:Int
}
struct Args:Encodable {
let mobileData:States
let bluetooth:States
}
struct Wrapper:Encodable {
let args:Args
}
let json = Wrapper(
args: Args(
mobileData: States(accessState: 1, changeState: 0),
bluetooth: States(accessState: 1, changeState: 0)
)
)
let data = JSONEncoder().encode(json)
print(String(data: data, encoding: .utf8)!)
// {"args":{"mobileData":{"accessState":1,"changeState":0},"bluetooth":{"accessState":1,"changeState":0}}}

最新更新