2013-06-01 94 views
0

我正在解决前端开发(AngularJS),而不是从后端拉数据(这是不完整的,但呈现到JSON的一切),我期待只使用硬编码的JSON。复杂的JSON结构

但是,我对此并不熟悉,似乎无法找到任何有关复杂JSON结构的内容。从基本意义上讲,我的网络应用程序拥有用户和他们创建的内容。所以,在我看来,会有两个数据库,但我不确定我是否正确接近它。

  1. 用户 - 用户名,位置,创建的内容,注释等

    "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" 
          } 
    
         ], 
    
        } 
    ] 
    
  2. 创建的内容 - 标题,描述,用户名,注释等

    "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中呈现的数据结构。希望这能说明我的意思是复杂吗?

任何和所有的帮助表示赞赏。

+0

所有[** JSON **](https://developer.mozilla.org/en/docs/JSON)都是有效的_JavaScript_(因此_JSON_中的_JS_)。这是一种书写方式(_Object_文字的一个子集)。每个键都应该有一个值,每个值应该是另一个_Object_,_Array_,_Number_,_String_,'true','false'或'null'(希望我没有忘记)。 _JSON_中的_Array_中的每个项目也必须是其中的一个。那么,“复杂”是什么意思? –

+0

结构看起来不错。如果您尝试返回所有用户评论,并且出现了很多问题,则会发生一些问题。你对REST和URI是正确的。您发布的用户示例将具有类似以下内容的URI:http:// yourdomain/users/12。 “用户”只是一个项目,所以我会删除'[''user'之后:' –

+0

您可能想查看[AngularJS book](http://shop.oreilly。com/product/0636920028055.do)由Brad Green和Shyam Seshadri提供。 “与服务器通信”一章非常好,并且会为您提供有关如何实现用于处理数据的模型/服务的想法。 – ChrisP

回答

1

我不知道为什么你似乎将对象放入单项数组中(如开头的方括号所示)。除此之外,我看起来很好。一般而言,单个项目(比如“用户”)被组织为一个对象,而多个项目是对象的数组。

至于角的东西,如果你想拉从一个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; 
}); 

我也是电子书籍寻找到Deployed做开发没有获得实时数据服务。

+0

感谢您提供有关从JSON文件中提取的建议。我也会考虑部署。通过使对象成为单个项目数组,究竟是什么意思?在这些情况下,对象mainItem或用户只是一个例子。我会有多个用户或多个内容。我只是不确定你的意思。 – jstacks

+0

如果您要返回倍数,那么请尽量使用数组。从你的例子看来,你只是拉回了一个用户。 – Sharondio