Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 复杂JSON结构_Javascript_Json_Database Design - Fatal编程技术网

Javascript 复杂JSON结构

Javascript 复杂JSON结构,javascript,json,database-design,Javascript,Json,Database Design,我正在处理前端开发(AngularJS),而不是从后端提取数据(这不是完整的,但将所有内容都呈现为JSON),我希望只使用硬编码的JSON 然而,我对这一点还不熟悉,似乎找不到关于复杂JSON结构的任何信息。从基本意义上说,我的web应用程序拥有用户和他们创建的内容。所以,在我看来,将有两个数据库,但我不确定我是否正确地接近它 用户-用户名、位置、创建的内容、评论等 "user": [ { "userID": "12", "userUserName": "

我正在处理前端开发(AngularJS),而不是从后端提取数据(这不是完整的,但将所有内容都呈现为JSON),我希望只使用硬编码的JSON

然而,我对这一点还不熟悉,似乎找不到关于复杂JSON结构的任何信息。从基本意义上说,我的web应用程序拥有用户和他们创建的内容。所以,在我看来,将有两个数据库,但我不确定我是否正确地接近它

  • 用户-用户名、位置、创建的内容、评论等

    "user": [
        {
            "userID": "12",
            "userUserName": "My Username",
            "userRealName": "My Real Name",
            "mainInterests": [
                {
                    "interest": "Guitar"
                },
                {
                    "interest": "Web Design"
                },
                {
                    "interest": "Hiking"
                }
            ],
            "userAbout": "All about me...",
            "userComments": [
                {
                    "comment": "this is a comment", "contentID" : "12"
                },
                {
                    "comment": "this is another comment", "contentID" : "123"
                }
    
            ],
    
        }
    ]
    
    "mainItem": [
        {
            "mainID": "1",
            "mainTitle": "Guitar Lessons",
            "mainCreatorUserName": "My Username",
            "mainCreatorRealName": "My Real Name",
            "mainTags": [
                {
                    "tag": "Intermediate"
                },
                {
                    "tag": "Acoustic"
                },
                {
                    "tag": "Guitar"
                }
            ],
            "mainAbout": "Learn guitar!",
    
            "mainSeries": [
                {
                    "videoFile": "file.mov",
                    "thumbnail": "url.jpg",
                    "time": "9:37",
                    "seriesNumber": "1",
                    "title": "Learn Scales"
                },
                {
                    "videoFile": "file.mov",
                    "thumbnail": "url.jpg",
                    "time": "8:12",
                    "seriesNumber": "2",
                    "title": "Learn Chords"
                }
            ],
            "userComments": [
                {
                    "comment": "this is a comment", "userID" : "12"
                },
                {
                    "comment": "this is another comment", "userID" : "123"
                }
    
            ]
        }
    ]
    
  • 创建的内容-标题、描述、用户名、注释等

    "user": [
        {
            "userID": "12",
            "userUserName": "My Username",
            "userRealName": "My Real Name",
            "mainInterests": [
                {
                    "interest": "Guitar"
                },
                {
                    "interest": "Web Design"
                },
                {
                    "interest": "Hiking"
                }
            ],
            "userAbout": "All about me...",
            "userComments": [
                {
                    "comment": "this is a comment", "contentID" : "12"
                },
                {
                    "comment": "this is another comment", "contentID" : "123"
                }
    
            ],
    
        }
    ]
    
    "mainItem": [
        {
            "mainID": "1",
            "mainTitle": "Guitar Lessons",
            "mainCreatorUserName": "My Username",
            "mainCreatorRealName": "My Real Name",
            "mainTags": [
                {
                    "tag": "Intermediate"
                },
                {
                    "tag": "Acoustic"
                },
                {
                    "tag": "Guitar"
                }
            ],
            "mainAbout": "Learn guitar!",
    
            "mainSeries": [
                {
                    "videoFile": "file.mov",
                    "thumbnail": "url.jpg",
                    "time": "9:37",
                    "seriesNumber": "1",
                    "title": "Learn Scales"
                },
                {
                    "videoFile": "file.mov",
                    "thumbnail": "url.jpg",
                    "time": "8:12",
                    "seriesNumber": "2",
                    "title": "Learn Chords"
                }
            ],
            "userComments": [
                {
                    "comment": "this is a comment", "userID" : "12"
                },
                {
                    "comment": "this is another comment", "userID" : "123"
                }
    
            ]
        }
    ]
    
  • 还有比这更复杂的事情,但我只是想知道我是否在正确地处理这个问题。也许我甚至完全错误地理解了这一点(例如,CRUD与REST?这在这里重要吗?据我所知,REST意味着上面的每个对象都是具有其唯一URI的资源?因此JSON呈现会受到影响吗?)。我真的不确定。但最终,我需要正确地使用JSON结构将数据拉入前端。可以假设,无论所述结构是什么,都将在后端镜像和呈现

    编辑*谢谢你们的回复。我想我的问题的一部分,即我澄清“复杂”的地方,是不存在的。所以我想解释一下。我想不仅仅是JSON本身,我真正指的是数据的结构。例如,在我的示例中,我将我的数据构造为都位于两个唯一对象(用户和内容)之下。这是正确的吗?或者我应该更多元化地思考我的数据?例如,从技术上讲,我可以有一个评论数据库(其中每个评论都是主要对象)。或者这仍然隐含在我的数据集中?也许我的问题甚至不是关于JSON,而是碰巧在JSON中呈现的数据结构。希望这能澄清我所说的复杂是什么意思


    非常感谢您提供的任何帮助。

    我不知道您为什么要将看似对象的内容放入单个项目数组中(如开头的方括号所示)。除此之外,我觉得还不错。一般来说,单个项目(如“用户”)被构造为一个对象,而多个项目是对象的数组

    至于角度方面的东西,如果您想直接从JSON文件中提取作为测试,请查看以下内容:

    var services = angular.module('app.services', [])
    
    services.factory('User', function($http) {
        var User = function(data) { 
            return data;
        }
    
        User.findOne = function(id) {
            return $http.get('/test_user.json').then(function(response) { 
                return new User(response.data); 
            });
        };
    
        return User;
    });
    

    我还建议您在不访问实时数据服务的情况下进行开发。

    All是有效的JavaScript(因此JSON中的JS)。它是一种写入(对象文字的子集)的方式。每个键都应该有一个值,每个值应该是另一个对象、一个数组、一个数字、一个字符串、
    true
    false
    null
    (希望我没有忘记任何值)。JSON中数组中的每个项也必须是其中之一。那么,你说的“复杂”是什么意思?结构看起来不错。如果您试图返回所有用户评论,并且其中有很多评论,则会出现一些问题。关于REST和URI,您是对的。您发布的用户示例的URI类似:。“用户”只是一个项目,因此我将删除
    用户:
    之后的“[”。您可能想查看Brad Green和Shyam Seshadri的文章。“与服务器通信”一章非常好,将为您提供有关如何实现用于处理数据的模型/服务的想法。Paul,我添加了一条注释,澄清了我所说的复杂的含义。Chris,我将研究这本书,因为angular JS的任何帮助都是很好的。最后,Matt,如果我理解正确,REST不应该更改JSON。这只意味着behind每个对象都附加了一个资源URI。返回所有用户评论的问题背后的原因是什么?这与底层数据结构有关吗?我很想了解。再次感谢各位!感谢你们关于从JSON文件中提取的建议。我还将研究部署。ma到底是什么意思king objects single item array?在这些情况下,object mainItem或user只是一个示例。我会有多个用户或多个内容。我不确定你的意思。如果你返回的是多个,那么无论如何,使用一个数组。从你的示例来看,你好像在撤回一个用户。