【问题标题】:Use javascript to update a json file使用 javascript 更新 json 文件
【发布时间】:2014-01-31 10:35:44
【问题描述】:

我想先说我知道我所做的并不理想。 涵盖以下内容:

我需要通过 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.ini 中编辑文件。看看 JavaScript 的 JSON functionality.
  • 同意@Cerbrus:基本上你需要做的是在浏览器上加载 JSON,在 JS 中解析它,按照你想要的方式改变它,将它字符串化 - 参见 JSON.stringify( obj ) - 然后 POST它回到服务器。无论您使用的是服务器端的哪种技术,因为它只需要读取 POST 并将其写入 JSON 文件。
  • 就是这样。我不知道我在服务器端做什么。这确实是我第一次涉足 Web 开发(我通常为 GIS 系统做 C# 接口工作)。我想我要问的是我如何在服务器上做到这一点。对不起,我对此一无所知。

标签: javascript php jquery json asp-classic


【解决方案1】:

编辑 JSON 文件:

  1. Open带有php的文件
  2. 将内容发送到浏览器(只需将其作为字符串转储到脚本标签中的变量中)
  3. Parse 带有 JavaScript 的 JSON(onload -> 从脚本标签中获取字符串)
  4. Edit对象
  5. Convert 再次转换为 JSON 字符串
  6. Sendphp
  7. Havephp 覆盖文件。

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

编辑:由于您似乎已经拥有 JavaScript 中的数据,因此需要考虑步骤 1-3。

【讨论】:

  • 谢谢。关于在我的项目中包含 php,我应该知道什么技巧吗?还是调用脚本就足够了?我正在使用 VS 内置的 IIS express 来代替实际的服务器。
  • 我只是使用 jQuery 的post() 来调用脚本,是的。然后脚本会从 post 参数中获取 JSON 字符串,并将其保存到文件中:$.post( "url/saveJSON.php", succes_handler);(其中succes_handler 函数是可选的)
猜你喜欢
  • 2020-09-23
  • 1970-01-01
  • 2016-09-29
  • 1970-01-01
  • 1970-01-01
  • 2021-10-25
  • 2012-01-31
  • 1970-01-01
  • 2020-08-08
相关资源
最近更新 更多