如何在 Swift 中的字典中插入数组
How to insert Array inside a Dicionary in Swift
我正在 Swift 创建一个绘图应用程序,可以在 canvas 上为 HTML 重新绘制。只是一个原型。我需要的是将这些数据以 JSON
格式保存到我的数据库中。
我用数组和字典组织了所有内容。
我怎样才能生成这样的东西:
{
"data": [
{
"width": 150,
"height": 200,
"x": 45,
"y": 65,
"id": "line4"
},
{
"width": 150,
"height": 200,
"x": 45,
"y": 65,
"id": "Shape1"
},
{
"width": 150,
"height": 200,
"x": 45,
"y": 65,
"id": "line3"
},
{
"width": 350,
"height": 400,
"x": 45,
"y": 65,
"id": "line2"
}
]
}
用Arrays and Dicionaries (and / or Structs
)然后变成Json.
我试图在另一个词典的数组中创建一个词典。
数据是动态的,这是个大问题。
帮助将不胜感激
这里说的是Objective-C的做法。您可以将此解决方案移植到 Swift.
Generate JSON string from NSDictionary in iOS
不确定这是否是您的问题,但要创建静态结构,您所要做的就是将花括号替换为方括号。
let data = [ "data": [
[
"width": 150,
"height": 200,
"x": 45,
"y": 65,
"id": "line4"
],
[
"width": 150,
"height": 200,
"x": 45,
"y": 65,
"id": "line1"
]
]
]
并将其序列化为 JSON 数据:
let jsonData = try! NSJSONSerialization.dataWithJSONObject(data, options: NSJSONWritingOptions.PrettyPrinted)
并反序列化回 Swift 个对象:
let data2 = try! NSJSONSerialization.JSONObjectWithData(jsonData, options: NSJSONReadingOptions.AllowFragments)
您可能还想从数据创建 JSON 字符串:
let jsonString = String(data: jsonData, encoding: NSUTF8StringEncoding)
或者从JSON字符串获取数据:
let dataFromString = jsonString?.dataUsingEncoding(NSUTF8StringEncoding)
当然,您可以使用 NSJSONSerialization
.
将其转换为 Swift 对象
var arr: Array<Any> = []
var dict1: Dictionary<String,Any> = [:]
var dict: Dictionary<String,Any> = [:]
arr = ["text",1,true]
dict1["arr"] = arr
dict["dict1"] = dict1
//
var dict2: Dictionary<String,Any> = [:]
dict["dict2"] = dict2
print(dict) // ["dict2": [:], "dict1": ["arr": ["text", 1, true]]]
withUnsafeMutablePointer(&dict["dict2"]) { (pdict2) -> Void in
var pd = UnsafeMutablePointer<Dictionary<String,Any>>(pdict2)
pd.memory.updateValue(arr, forKey: "arr2")
}
print(dict) // ["dict2": ["arr2": ["text", 1, true]], "dict1": ["arr": ["text", 1, true]]]
你可以的。我不推荐你这种方法。你最好重新设计你的想法
我正在 Swift 创建一个绘图应用程序,可以在 canvas 上为 HTML 重新绘制。只是一个原型。我需要的是将这些数据以 JSON
格式保存到我的数据库中。
我用数组和字典组织了所有内容。
我怎样才能生成这样的东西:
{
"data": [
{
"width": 150,
"height": 200,
"x": 45,
"y": 65,
"id": "line4"
},
{
"width": 150,
"height": 200,
"x": 45,
"y": 65,
"id": "Shape1"
},
{
"width": 150,
"height": 200,
"x": 45,
"y": 65,
"id": "line3"
},
{
"width": 350,
"height": 400,
"x": 45,
"y": 65,
"id": "line2"
}
]
}
用Arrays and Dicionaries (and / or Structs
)然后变成Json.
我试图在另一个词典的数组中创建一个词典。 数据是动态的,这是个大问题。
帮助将不胜感激
这里说的是Objective-C的做法。您可以将此解决方案移植到 Swift.
Generate JSON string from NSDictionary in iOS
不确定这是否是您的问题,但要创建静态结构,您所要做的就是将花括号替换为方括号。
let data = [ "data": [
[
"width": 150,
"height": 200,
"x": 45,
"y": 65,
"id": "line4"
],
[
"width": 150,
"height": 200,
"x": 45,
"y": 65,
"id": "line1"
]
]
]
并将其序列化为 JSON 数据:
let jsonData = try! NSJSONSerialization.dataWithJSONObject(data, options: NSJSONWritingOptions.PrettyPrinted)
并反序列化回 Swift 个对象:
let data2 = try! NSJSONSerialization.JSONObjectWithData(jsonData, options: NSJSONReadingOptions.AllowFragments)
您可能还想从数据创建 JSON 字符串:
let jsonString = String(data: jsonData, encoding: NSUTF8StringEncoding)
或者从JSON字符串获取数据:
let dataFromString = jsonString?.dataUsingEncoding(NSUTF8StringEncoding)
当然,您可以使用 NSJSONSerialization
.
var arr: Array<Any> = []
var dict1: Dictionary<String,Any> = [:]
var dict: Dictionary<String,Any> = [:]
arr = ["text",1,true]
dict1["arr"] = arr
dict["dict1"] = dict1
//
var dict2: Dictionary<String,Any> = [:]
dict["dict2"] = dict2
print(dict) // ["dict2": [:], "dict1": ["arr": ["text", 1, true]]]
withUnsafeMutablePointer(&dict["dict2"]) { (pdict2) -> Void in
var pd = UnsafeMutablePointer<Dictionary<String,Any>>(pdict2)
pd.memory.updateValue(arr, forKey: "arr2")
}
print(dict) // ["dict2": ["arr2": ["text", 1, true]], "dict1": ["arr": ["text", 1, true]]]
你可以的。我不推荐你这种方法。你最好重新设计你的想法