使用JavaScript更新JSON文件

6

首先声明,我知道我要做的不是最好的方式。

现在开始进入正题:

我需要通过javascript来更新JSON文件中的数据。以下是JSON文件的当前状态:

{
"nextid" : 3,
"ingredients" : [
{
    "id": 1,
    "name": "onion",
    "kilojoules": 180,
    "quantity": 1,
    "measurement": "whole",
    "nutrition": [
        {"value": "Fat Total", "quantity": 110},
        {"value": "Saturated Fat", "quantity": 46},
        {"value": "Sodium", "quantity": 4},
        {"value": "Carbohydrates Total", "quantity": 10000},
        {"value": "Sugar", "quantity": 5000},
        {"value": "Fibre", "quantity": 2000},
        {"value": "Proten", "quantity": 1000}
    ]},

{
    "id" : 2,
    "name": "carrot",
    "kilojoules": 56,
    "quantity": 1,
    "measurement": "whole",
    "nutrition": [
        {"value": "Fat Total", "quantity": 66},
        {"value": "Saturated Fat", "quantity": 11},
        {"value": "Sodium", "quantity": 26},
        {"value": "Carbohydrates Total", "quantity": 3000},
        {"value": "Sugar", "quantity": 2000},
        {"value": "Fibre", "quantity": 1000},
        {"value": "Proten", "quantity": 279}
    ]}
]

}

现在假设我想要编辑胡萝卜对象。我已经在我的html页面上构建了一个更新后的胡萝卜对象,并将其作为一个对象放置在javascript中。那么,我需要做些什么来更新源json文件呢?
就像我之前所说的,我知道这并不理想。我应该使用数据库来存储和操作数据,但现在我已经铺好了床,无论这让你们感到多么难受,我都必须让它工作起来。
研究告诉我,我需要在服务器端使用PHP或ASP来收集javascript传递给它的参数,但我不知道该从哪里开始。
我正在使用Visual Studio 2012进行开发,项目的参数禁止我使用插件。NuGet代码库是可以用的,但不能使用插件。基于这个条件,我认为我不能使用PHP。我的想法正确吗?
注意:是的,这是一个任务,但修改json文件超出了要求的范围。能够动态处理json数据就足够了,但我真的很想能够把一些数据写回去。
提前致谢。
编辑:可能也应该分享一下这个打开json文件的javascript代码。打开的结果存储在名为ingJson的脚本全局变量中。
function downloadIngredients() {
$(document).ready(function () {
    $.getJSON("/data/ingredientsInfo.js", function (result) {
        try
        {
            ingJson = result;
            ingredients = result.ingredients;
            ingredients.sort(orderByNameAscending);
            buildListBox(ingredients);
        }
        catch (err) {
            alert(err.message);
        }
    });
});
}

那么,JSON文件实际上是保存为文本文件吗? 如果是这样的话:用php打开它,将内容发送到浏览器,使用JavaScript解析JSON,编辑对象,再次将其转换为JSON字符串,将其发送回php,并让php覆盖该文件。很遗憾你不能直接在php中编辑文件。 请查看JavaScript的JSON功能。 - Cerbrus
同意@Cerbrus的观点:基本上你需要做的是在浏览器上加载JSON,用JS解析它,按照你想要的方式进行更改,将其字符串化 - 参见JSON.stringify(obj) - 然后将其POST回服务器。无论你使用哪种服务器端技术,因为它只需要读取POST并将其写入JSON文件即可。 - MarcoL
但问题在于,我不知道如何在服务器端操作。这是我第一次涉足Web开发(我通常为GIS系统做C#接口工作)。我想问的是,我该如何在服务器上实现这个功能?对于我的无知表示抱歉。 - DrBoon
1个回答

3
要编辑JSON文件:
  1. 使用php打开该文件
  2. 将内容发送到浏览器(只需在脚本标记中将其作为字符串转储变量)
  3. 使用JavaScript解析JSON (onload -> 从脚本标记获取字符串)
  4. 编辑对象
  5. 再次将其转换为JSON字符串
  6. 将其发送回 php
  7. php 覆盖文件。

很遗憾,你不能直接在php中编辑文件,这会使步骤2-6变得不必要。你只需要在php中解析编辑编码JSON。

编辑: 由于你似乎已经在JavaScript中拥有数据,因此步骤1-3已经完成。


谢谢。在我的项目中包含PHP时,有什么窍门需要了解吗?还是仅调用脚本就足够了?我正在使用集成到VS中的IIS Express代替真实服务器。 - DrBoon
我会使用jQuery的post()来调用脚本。然后,该脚本将从POST参数中获取JSON字符串,并将其保存到文件中:$.post( "url/saveJSON.php", succes_handler);(其中succes_handler函数是可选的)。 - Cerbrus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接