我正在处理前端开发(AngularJS)而不是从后端提取数据(这不完整但将所有内容呈现给JSON),我希望只使用硬编码的JSON。
但是,我是新手,似乎无法找到任何有关复杂JSON结构的内容。从基本的意义上讲,我的网络应用程序包含用户及其创建的内容。所以,在我看来,会有两个数据库,但我不确定我是否正确接近它。
用户 - 用户名,位置,创建的内容,评论等
"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呈现。希望这能澄清复杂意味着什么?
感谢任何和所有帮助。
答案 0 :(得分:1)
我不确定你为什么要把对象变成单项数组(正如开头的方括号所示)。除此之外,它看起来很好。一般来说,单个项目(如“用户”)被构造为一个对象,而倍数是对象的数组。
至于Angular的东西,如果你想从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进行开发。