如何使用NodeJS修改文件中的JSON值

时间:2016-05-05 03:37:38

标签: javascript json node.js

我创建了一个下拉菜单供人们编辑位置。并且所有内容都是由for循环生成的,我如何依赖于feedID来更改区域,因为$.post()函数会改变所有区域但不依赖于它目前的feedID。

<span class="dropdown">
    <span class="result-date" type="button" data-toggle="dropdown">Hong Kong
        <span class="caret"></span>
    </span>

    <ul class="dropdown-menu"> 
        <li id="CTHK"><a href="">Hong Kong</a></li>
        <li id="CTTW"><a href="">Taiwan</a></li><
        <li id="CTMA"><a href="">Macau</a></li><
        <li id="CTCN"><a href="">China</a></li><
        <li id="CTOT"><a href="">Others</a></li>
    </ul>
</span>

在用户决定修改并单击欲望选项后,它将触发$.post()功能,以便通过speicifc api更改JSON的内容

var initRegionEdit = function() {

    $("#CTHK").click(function() {

        var api = "/domain/path/somemorepaths?id=" + id;

        var postData = {
            region : "TW"
        };

        $.post(api_submit, postData).done(function (data) {
            console.log(postData)
        }); 
    })
}

然后它将进入JSON文件并更改区域部分

  "errorCode": null,
  "message": "Success",
  "result": {
    "total": 2,
    "data": [
      {
        "title": "watever",
        "content": " lietlie siktl i's fgkkksfsag...",
        "region": "Hong Kong",
        "feedId": "dfc68cff0a2afc540407d02f554d9508",
      },
      {
        "title": "Visual F",
        "content": "STORE \" I'm ...",
        "region": "Hong Kong",
        "feedId": "e54de354837e3add77b1030e5456e522",
      }

我怎么可能依赖于feedID来改变这个区域?

更新1: 让我们假设用户点击其他人,我希望看到的结果就像用户点击feedId定义的.section一样。

<div class="dfc68cff0a2afc540407d02f554d9508"> //generate by {{feedId}} handle bar js
 <span class="dropdown">
        <span class="result-date" type="button" data-toggle="dropdown">Hong Kong
            <span class="caret"></span>
        </span>

        <ul class="dropdown-menu"> 
            <li id="CTHK"><a href="">Hong Kong</a></li>
            <li id="CTTW"><a href="">Taiwan</a></li><
            <li id="CTMA"><a href="">Macau</a></li><
            <li id="CTCN"><a href="">China</a></li><
            <li id="CTOT"><a href="">Others</a></li>
        </ul>
    </span>
</div>

并且javascript api应该更改feedId匹配部分而不是每个json的区域

  {
            "title": "Visual F",
            "content": "STORE \" I'm ...",
            "region": "Others",
            "feedId": "e54de354837e3add77b1030e5456e522",
          }
  

P.S我正在通过node.js开发应用程序

1 个答案:

答案 0 :(得分:1)

基于以下程序的解决方案:

阅读文件 - &gt;修改其内容 - &gt;写文件将使用File System Node Module

示例代码:

var fs = require('fs');

// Read file and parse into JSON
var jsonFileObject = JSON.parse(fs.readFileSync('fileName')); 

... modify the contents of jsonFileObject as required

// Write the modified contents back to the file
var jsonFileObject = JSON.parse(fs.writeFileSync('fileName', jsonFileObject)); 

根据特定示例中的region修改feedId

for (var dataIndex in jsonFileObject.result.data) {
   if (jsonFileObject.result.data[dataIndex].feedId === feedId) {
      jsonFileObject.result.data[dataIndex].region = updatedRegion;
   }
}

假设JSON文件的格式与帖子相同。如果没有,修改示例以满足您的需求应该相当简单。