JSON创建方法
Posted
技术标签:
【中文标题】JSON创建方法【英文标题】:JSON Creating Approach 【发布时间】:2018-01-31 12:23:31 【问题描述】:我正在做一个 ios 项目。我正在尝试创建 Twitter。我正在使用 Firebase 数据库。如您所知,Firebase 使用 JSON,我对创建数据库感到困惑。
首先,我有姓名、姓氏、电子邮件、用户名和个人资料 URL 的用户。
我也有帖子,其中有一个名为 post 的字符串,但如您所知,我需要在我的帖子中显示用户。一个帖子对象有它的用户名、profilepic 和用户名
用户也可以关注其他用户,他们的时间线应该只有他们关注的用户发送的帖子。
这个结构让我很困惑,这是我找到的解决方案和我的 json 文件的示例
"users" :
"1SUbzM6rIRTQexrOgJ8BnDBCDWt2" :
"email" : "Test1@test.com",
"fullname" : "Test1 Test1",
"name" : "Test1",
"surname" : "Test1",
"username" : "@test1",
"ppurl" : "www.ppurl.com/ppppp",
"posts" :
,
"4vBvO9vURkPneusviRGxKglJ3n32" :
"email" : "Test2@test.com",
"fullname" : "Test2 Test2",
"name" : "Test2",
"surname" : "Test2",
"username" : "@test2",
"ppurl" : "www.ppurl.com/ppppp",
"posts" :
"34E20A52-8E66-4AF7-8DA4-73BDE9185FCB" :
"post" : "Bir post daha\n"
,
"59798B81-4510-4E63-8050-3AF04698C7B0" :
"post" : "3. Postumuz gör better approach"
,
"follows" :
"5QaOU5Pd05h2M8wExcUteUg6mlJ2" :
"email" : "TEST3@TEST.com",
"fullname" : "TEST3 TEST3",
"name" : "TEST3",
"surname" : "TEST3"
"username" : "@test3",
"ppurl" : "www.ppurl.com/ppppp",
"posts" :
,
"6y0RLGGCw6Zg5RHgPxghKUId9pJ3" :
"email" : "TEST4@jjj.hhh",
"fullname" : "TEST4 TEST4",
"name" : "TEST4",
"surname" : "TEST4",
"username" : "@test4",
"ppurl" : "www.ppurl.com/ppppp",
"posts" :
,
,
,
"5QaOU5Pd05h2M8wExcUteUg6mlJ2" :
"email" : "TEST3@TEST.com",
"fullname" : "TEST3 TEST3",
"name" : "TEST3",
"surname" : "TEST3"
"username" : "@test3",
"ppurl" : "www.ppurl.com/ppppp",
"posts" :
,
"6y0RLGGCw6Zg5RHgPxghKUId9pJ3" :
"email" : "TEST4@jjj.hhh",
"fullname" : "TEST4 TEST4",
"name" : "TEST4",
"surname" : "TEST4"
"username" : "@test4",
"ppurl" : "www.ppurl.com/ppppp",
"posts" :
这是正确的方法吗?用户和帖子重复,很难从 swift 中获取数据。我是否应该保存与用户不同的帖子,但如果我使用这种方法,我无法获得帖子的用户名、名称和 ppurl 等。
我应该如何构建我的 JSON 文件并使用最有效的方式创建关系。
编辑:
我可以将我的 json 文件添加到我的项目中。我的问题是:写同一个用户 2-3 次是真的吗?我的 json 文件中已经有一个用户,但是当有人关注某人时,我应该在 Friends 属性中再次编写它吗?或者我可以只用 id 获得参考。
【问题讨论】:
基本上在 Swift 中将 JSON 解析为模型是没有问题的,但我会将users
、posts
和 follows
声明为数组,而不是字典,将标识符键(如 @987654325 @) 进入字典。
【参考方案1】:
为什么不使用像这样更简单的结构:
"users": [
"identifier": "1SUbzM6rIRTQexrOgJ8BnDBCDWt2",
"email": "Test1@test.com",
"fullname": "Test1 Test1",
"name": "Test1",
"surname": "Test1",
"username": "@test1",
"ppurl": "www.ppurl.com/ppppp"
,
"identifier": "4vBvO9vURkPneusviRGxKglJ3n32",
"email": "Test2@test.com",
"fullname": "Test2 Test2",
"name": "Test2",
"surname": "Test2",
"username": "@test2",
"ppurl": "www.ppurl.com/ppppp",
"posts": [
"34E20A52-8E66-4AF7-8DA4-73BDE9185FCB",
"59798B81-4510-4E63-8050-3AF04698C7B0"
],
"follows": [
"5QaOU5Pd05h2M8wExcUteUg6mlJ2",
"6y0RLGGCw6Zg5RHgPxghKUId9pJ3"
]
,
"identifier": "5QaOU5Pd05h2M8wExcUteUg6mlJ2",
"email": "TEST3@TEST.com",
"fullname": "TEST3 TEST3",
"name": "TEST3",
"surname": "TEST3",
"username": "@test3",
"ppurl": "www.ppurl.com/ppppp"
,
"identifier": "6y0RLGGCw6Zg5RHgPxghKUId9pJ3",
"email": "TEST4@jjj.hhh",
"fullname": "TEST4 TEST4",
"name": "TEST4",
"surname": "TEST4",
"username": "@test4",
"ppurl": "www.ppurl.com/ppppp"
]
否则,您的 JSON 有效负载将随着时间的推移变得越来越大。
编辑刚刚看到@vadian 的评论...假设这是基于他的想法。
【讨论】:
感谢您的回复!但是我在哪里存储帖子文本? 您可以将其存储在另一个与users
同级的数组中,命名为posts
。以上是关于JSON创建方法的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 PHP 和 MySQL 创建 JSON 嵌套子父树(PDO 方法)