使用Javascript/JQUery解析JSON文件

Parsing a JSON file using Javascript/JQUery

本文关键字:JSON 文件 解析 JQUery Javascript 使用      更新时间:2023-09-26

我有这个JSON文件:

{
"guest": {
    "permissions": {
        "webportal": [
            "access",
            "modify"
        ],
        {…}
        "test/dashboard": [
            "access"
        ]
    },
    "users": [
        "guest"
    ],
    "time_out": "3600000"
},
"administrator": {
    "permissions": {
        "webportal": [
            "monitoring",
            "access",
            "modify"
        ],
       {…}
        "test/settings": [
            "access",
            "modify"
        ]
    },
    "users": [
        "admin"
    ],
    "time_out": "3600000"
  }
}

我需要做的就是简单地将第一个项目放入一个选择框中。例如:

GUEST、ADMINISTRATOR和"users"部分下的任何东西,可能有"n"个条目,需要放入这样的选择中:

<select id='JSONFile'>
     <option value='administrator'>administrator</option>
     <option value='guest'>guest</option>
     <option value='useradmin'>useradmin</option>
</select>

JSON文件中的数据余额需要放入一个数组中,这样我以后就可以访问它并将其转储为CheckBoxes的值。

例如:在Guest:Permissions:WebPortal - there's ACCESS and MODIFY下。这是仅有的两个权限。因此,客人可以访问门户网站;他们必须具有访问权限。若要编辑,请修改。明白了吗?

所以我对这个东西是新手,只需要让它尽可能简单。

哦,是的,我有没有提到我们正在使用KNOCKOUT,并且下拉必须是KO可观测阵列?但一件事一件事。

第二部分稍后介绍。

Ciao!

要获取并显示select元素中最高级别对象的键,请使用以下代码。

var optionValues = [];
var data = JSON.parse(JSONdata);       //this parses your data securely into an object that you can easily use
for(option in selection) {             //goes through the highest level keys of the object
  if (data.hasOwnProperty(option)) {   //this ignores the default object properties (things you don't want)
    if(option === 'users')             //takes into account user titles
      JSONdata['users'].forEach(function(userTitle) { //iterates over all of the user data and appends usertitles to the array
        optionValues.push('user'+userTitle);
      });
    else {                           // for the default roles like admin
      optionValues.push(option);     //this puts all of the non-user keys into an array 
    }
  }
}

这将为您在上面发布的数据输出=>['guest','administrator','useradmin']。然后,您可以使用document.createElement和document.appendChild为所有这些创建选项,并将它们放置在文档中的select元素下。

在了解了敲除映射插件后,我的敲除生活变得轻松多了。

http://knockoutjs.com/documentation/plugins-mapping.html.

这样,您就可以从JSON数据中自动创建模型。

viewModel = ko.mapping.fromJS(data);

一旦进入viewModel,你就可以迭代到你内心的内容。您可能想在json数据中添加一个根节点,这样就可以更容易地迭代角色。