我正在尝试在Swift中构建一些JSON。我已经看到了一些将Dictionary转换为JSON或将类转换为JSON的示例,但我希望能够将数据转换为JSON。我还有多个想要存储的对象,而不仅仅是一个(我发现的大多数示例似乎都是这样)。
这是我的代码,它创建了我想要存储的对象的字典:
for topic in topics{
var relEntries = getRelevantEntries(topic.id)
var entryItem:[String:Any] = ["":""]
for entry in relEntries{
var eId = ["id":entry.id]
var eTitle = ["title":entry.title]
entryItem = [
"id":entry.id,
"title":entry.title
]
}
var topicItem:[String:Any] = [
"id":topic.id,
"topicName":topic.name,
"entries":entryItem
]
}
我想创建一个JSON数组,其中每个对象包含一个int,string和另一个JSON数组。我写了一个演示表来澄清。
[
{ id: "id",
topicName: "topicName",
entries:[
{ id: "id", title: "title" },
{ id: "id2", title: "title2"}
]},
{ id: "id2",
topicName: "topicName2",
entries:[
{ id: "id", title: "title" },
{ id: "id2", title: "title2"}
]}
]
那么我从哪里开始将所有主题组合成一个JSON数组?感谢。
答案 0 :(得分:0)
您可以在自定义对象上使用序列化技术来构建代表它们的Foundation类型。
之后,您可以使用NSJSONSerialization
类生成json。
由于您必须区分不同的类,因此除了handling with mirrors之外,可能会在此时为您推广这项工作。
答案 1 :(得分:0)
你说:
我想创建一个JSON数组,其中每个对象包含一个int,string和另一个JSON数组。我写了一个演示表来澄清。
[
{ id: "id",
topicName: "topicName",
entries:[
{ id: "id", title: "title" },
{ id: "id2", title: "title2"}
]},
{ id: "id2",
topicName: "topicName2",
entries:[
{ id: "id", title: "title" },
{ id: "id2", title: "title2"}
]}
]
那是什么?它是一个数组([...]
)的字典({...}
),其中每个字典都有一个id
键(带有字符串值),一个topicName
键(使用字符串值)和entries
键,其中每个entries
值是一个数组,其中包含两个带有id
键和title
键的字典(每个字符串都有一个字符串)值)。
因此,您的工作仅仅是构建该结构并将其序列化为JSON。那是微不足道的。在这里,作为一个模型,我将展示使用文字:
var d1 : [NSObject:AnyObject] = ["id":"id", "topicName":"topicName"]
var d2 : [NSObject:AnyObject] = ["id":"id2", "topicName":"topicName2"]
let dd1 = ["id":"id", "title":"title"]
let dd2 = ["id":"id2", "title":"title2"]
let arr1 = [dd1,dd2]
let arr2 = [dd1,dd2]
d1["entries"] = arr1
d2["entries"] = arr2
let arr = [d1,d2]
let d = try! NSJSONSerialization.dataWithJSONObject(arr, options: [])
let s = NSString(data: d, encoding: NSUTF8StringEncoding)
print(s!)
输出:
[
{"id":"id",
"entries":[
{"id":"id","title":"title"},
{"id":"id2","title":"title2"}
],
"topicName":"topicName"
},
{"id":"id2",
"entries":[
{"id":"id","title":"title"},
{"id":"id2","title":"title2"}
],
"topicName":"topicName2"
}
]
我相信你会发现这完全等同于你所要求的。现在,您所要做的就是编写代码,将原始数据结构转换为我在上面构建的数据结构。