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 解析为模型是没有问题的,但我会将 userspostsfollows 声明为数组,而不是字典,将标识符键(如 @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创建方法的主要内容,如果未能解决你的问题,请参考以下文章

动态 linq:创建生成 JSON 结果的扩展方法

创建可读 JSON 字符串的最简单方法是啥?

如何使用 PHP 和 MySQL 创建 JSON 嵌套子父树(PDO 方法)

从JSON格式的字符串创建python列表的最简单方法是啥[重复]

从大型 JSON 文件创建树状结构的最有效方法

创建从 JSON 到 HTML 的布局