gpt4 book ai didi

javascript - 根据键从 JSON 对象中获取数据

转载 作者:行者123 更新时间:2023-11-30 16:52:16 26 4
gpt4 key购买 nike

我有这个 JSON 对象。

{ 
"headerContent": [
{
"name": "User Id",
"key": "userId",
"type": "text",
"default": "Enter User Id"
},
{
"name": "User Name",
"key": "userName",
"type": "text",
"default": "Enter User Name"
},
{
"name": "Password",
"key": "password",
"type": "password",
"default": "Enter Password"
},
{
"name": "Mobile Number",
"key": "mobileNumber",
"type": "text",
"default": "Enter Mobile Number"
},
{
"name": "User Category",
"key": "userCategory",
"type": "select",
"default": "Select Category",
"options" : ["Admin", "Client", "Regulator"]
},
{
"name": "E-Mail",
"key": "email",
"type": "text",
"default": "Enter Email"
},
{
"name": "User Access",
"key": "userAccess",
"type": "select",
"default": "Select User Access",
"options" : ["All", "Site"]
}
],
"bodyContent": [
{
"userId": "user_1",
"userName": "DemoUser",
"mobileNumber": "99999999",
"userCategory" : "Admin",
"email" : "demo@kl.com",
"userAccess" : "All"
}
]
}

headerContent 描述了bodyContent 的属性。现在,默认情况下,对象(如 user_1)中的所有数据都将显示在 details 中。在 html 页面中,我有一个包含 3 个值的选择框 [Admin, Client, Regulator];这是3个不同的用户类别。当我选择其中任何一个时,我想根据选择显示数据。

我的 HTML 页面包含一个用于选择类别的选择框。

 <script src="JSCode.js"></script>
<select id='listSelect' onChange="updateList()">
<option value='' selected >All</option>
<option value='admin'>Admin</option>
<option value='client'>Client</option>
<option value='regulator'>Regulator</option>
</select>
<div id='details'> </div>

最佳答案

JSFiddle here

HTML

<table align='center' >
<tr>
<td> <select id='listSelect' onChange="updateList()">
<option value='' selected >All</option>
<option value='Admin'>Admin</option>
<option value='Client'>Client</option>
<option value='Regulator'>Regulator</option>
</select></td>
</tr>
</table>
<div id="result"></div>

JS

var jsonObj = { 
"headerContent": [
{
"...": "..."
}
],
"bodyContent": [
{
"userId": "user_1",
"userName": "DemoUser",
"mobileNumber": "99999999",
"userCategory" : "Admin",
"email" : "demo@kl.com",
"userAccess" : "All"
},
{
"userId": "user_2",
"userName": "DemoUser",
"mobileNumber": "99999999",
"userCategory" : "Client",
"email" : "demo@kl.com",
"userAccess" : "All"
}
]
};

function searchJSON (json, content, where, is) {
content = json[content];
var result = [];
for (var key in content) {
if (content[key][where] == is || is == '') {
result.push(content[key]);
}
}
return result;
}

function printObj (obj, container) {
var html = '<table>';
for (var i in obj) {
for (var j in obj[i]) {
html += '<tr><td>' + j + '</td><td>' + obj[i][j] + '</td></tr>';
}
html += '<tr><td class="black"></td><td class="black"></td></tr>';
}
document.getElementById(container).innerHTML = html;
}

function updateList () {
var e = document.getElementById("listSelect");
var value = e.options[e.selectedIndex].value;
printObj(searchJSON(jsonObj, 'bodyContent', 'userCategory', value), 'result');
}

updateList();

在更改时它执行 updateList()。此函数获取元素的值。然后它执行 searchJSON()。此函数需要数据 (jsonObj)、数据中的内容(在您的情况下为 bodyContent)、您要查找的键(在您的情况下为 userCategory) 和您要查找的值。该函数循环遍历数据对象并搜索键。如果该值与您的选择相同,它会将对象添加到数组中。当循环完成时,它返回结果。

最后一个函数是一个简单的打印函数,用于将数据放入 html 中。为确保第一次打印,只需运行一次 updateList()

正在加载 .JSON SO link

var xmlhttp;

if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else {
// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}

xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == XMLHttpRequest.DONE ) {
if(xmlhttp.status == 200){
jsonObj = xmlhttp.responseText;
}
else if(xmlhttp.status == 400) {
alert('There was an error 400')
}
else {
alert('something else other than 200 was returned')
}
}
}

xmlhttp.open("GET", "jsonInfo.json", true);
xmlhttp.send();

关于javascript - 根据键从 JSON 对象中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30342064/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com