javascript - 在服务器上存储嵌套 JSON

标签 javascript php json

我将(模拟)产品数据硬编码到 JSON 文件中,我用它在应用程序中生成“目录”页面。然而,最终的计划是允许用户通过 CMS 风格的管理面板添加新产品。

显然我需要这些数据是持久的。显而易见的选择是使用 MySQL 或其他数据库,但由于这是一个相当复杂的数据结构,有大量嵌套,我无法想象如何轻松实现这一点。我可以简单地将 JSON 存储在服务器上的文本文件中,但随后我就失去了操作它的能力,并且每次进行更改时都必须发送整个集合。话又说回来,只有当人们添加和删除产品时才会出现这种情况,所以也许情况不会那么糟糕。也许我可以使用 PHP 解码 JSON,对其进行操作,然后将其重新序列化为 JSON 并将其保存到文本文件中。

抱歉,我跑题了。您认为我最好的选择是什么?

{
        currency: currency,
        currencySymbol: CurrencySymbol(currency),
        shoes: {
            title: 'Shoes',
            items:[ 
                [
                    {
                        name: 'Light Shoes', 
                        price: 99.99, 
                        description: "Donec eu lacus vel sapien luctus fermentum. Nulla consequat viverra volutpat. Phasellus et sagittis mauris.", 
                        imgUrl:'./catalogue/shoes/darkshoes.jpg'
                    },{
                        name: 'Dark Shoes', 
                        price: 59.99, 
                        description: "Donec eu lacus vel sapien luctus fermentum. Nulla consequat viverra volutpat. Phasellus et sagittis mauris.", 
                        imgUrl:'./catalogue/shoes/darkshoes.jpg'
                    },{
                        name: 'Brown Shoes',
                        price: 5.99,
                        description: "Donec eu lacus vel sapien luctus fermentum. Nulla consequat viverra volutpat. Phasellus et sagittis mauris.", 
                        imgUrl:'./catalogue/shoes/darkshoes.jpg'
                    }
                ],[
                    {
                        name: 'Gold Shoes',
                        price: 999.99,
                        description: "Donec eu lacus vel sapien luctus fermentum. Nulla consequat viverra volutpat. Phasellus et sagittis mauris.", 
                        imgUrl:'./catalogue/shoes/darkshoes.jpg'
                    },{
                        name: 'Dark Shoes', 
                        price: 59.99, 
                        description: "Donec eu lacus vel sapien luctus fermentum. Nulla consequat viverra volutpat. Phasellus et sagittis mauris.", 
                        imgUrl:'./catalogue/shoes/darkshoes.jpg'
                    },{
                        name: 'Brown Shoes',
                        price: 5.99,
                        description: "Donec eu lacus vel sapien luctus fermentum. Nulla consequat viverra volutpat. Phasellus et sagittis mauris.", 
                        imgUrl:'./catalogue/shoes/darkshoes.jpg'
                    }
                ]
            ]
        },
        dance: {
            title: 'Dance Gear',
            items: [ 
                [
                    {
                        name: 'Cool Cap', 
                        price: 99.99, 
                        description: "Donec eu lacus vel sapien luctus fermentum. Nulla consequat viverra volutpat. Phasellus et sagittis mauris.", 
                        imgUrl:'./catalogue/dance/dance.jpg'
                    },{
                        name: 'Baggy Pants', 
                        price: 59.99, 
                        description: "Donec eu lacus vel sapien luctus fermentum. Nulla consequat viverra volutpat. Phasellus et sagittis mauris.", 
                        imgUrl:'./catalogue/dance/dance.jpg'
                    },{
                        name: 'Jacket',
                        price: 5.99,
                        description: "Donec eu lacus vel sapien luctus fermentum. Nulla consequat viverra volutpat. Phasellus et sagittis mauris.", 
                        imgUrl:'./catalogue/dance/dance.jpg'
                    }
                ],[
                    {
                        name: 'T-Shirt',
                        price: 99.99,
                        description: "Donec eu lacus vel sapien luctus fermentum. Nulla consequat viverra volutpat. Phasellus et sagittis mauris.", 
                        imgUrl:'./catalogue/dance/dance.jpg'
                    },{
                        name: 'Hip-Hip Hoodie', 
                        price: 59.99, 
                        description: "Donec eu lacus vel sapien luctus fermentum. Nulla consequat viverra volutpat. Phasellus et sagittis mauris.", 
                        imgUrl:'./catalogue/dance/dance.jpg'
                    },{
                        name: 'Belt',
                        price: 5.99,
                        description: "Donec eu lacus vel sapien luctus fermentum. Nulla consequat viverra volutpat. Phasellus et sagittis mauris.", 
                        imgUrl:'./catalogue/dance/dance.jpg'
                    }
                ]
            ]

        }
    }

最佳答案

存储带有 .json 扩展名的 json 对象。这里不需要文本文件,因此不需要一直努力发送正确的 header 。

对于持久性部分:在您的数据库表中,仅引用本地文件系统上的 json 文件以及您需要的其他信息(更新时间等)。

示例表可能如下所示:

documents(id:pk, file, created_at, updated_at)

(当然,您也可以将原始 json 字符串存储在表中,但使用不适合存储 json 的数据类型会遇到危险,因此无法保存所有数据)

但是,这种方法仅适用于需要使用关系数据库系统

<小时/>

但是,更好的方法是使用文档数据库系统,例如 mongoDB评论里也推荐了这个。它绝对值得一看,但如果您有关系 dbms 背景,一开始可能会有点尴尬。

关于javascript - 在服务器上存储嵌套 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22966111/

相关文章:

javascript - Angular 2 HTTP json 请求在尝试解析结果时给我一个奇怪的响应

javascript - 如何为 jvector map 创建动态 json 以添加国家/地区数据

php - Cake php连接查询

php - 按钮从数据库行更改值

php - 将wordpress网站连接到远程数据库

json - 将对象从 Spring MVC 3 REST 客户端发送到 REST 提供者

javascript - 如何使 Canvas 的不同形状可拖动且其特定区域可放置在同一 Canvas 中

JavaScript 动画动态返回元素上的位置

javascript - 当前选择的选项未正确显示

javascript - 在 Web 存储中检索 JSON 数据不起作用