JS组JSON结构方法

具体需求为获取网页表格内的数据,并将这些数据组成json结构发送给web服务器。
在这里插入图片描述

1.json与字符串的互转

(1)json转字符串:
var str= JSON.stringify(jsonObj);
(2)字符串转json:
let jData = eval(’(’ + str+ ‘)’);

2.json结构组织

(1)空的json添加键值对
let obj = {};

            obj.mainDeviceId     = cells[4].childNodes["0"].value;
            obj.deviceName       = cells[0].innerHTML;
            obj.devicePsrId      = cells[1].innerHTML;
            obj.deviceType       = cells[2].innerHTML;
            obj.deviceRunDevName = cells[2].innerHTML;

obj :
{
"deviceName ":“bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb”,
“devicePsrId”:“222” ,
“devicePsrId”:“aa” ,
“devicePsrId”:“222” ,
“devicePsrId”:“2”
}

(2)json添加json数组
由{“cmdType”:3}转变为
//省略了deviceList部分子节点
{“cmdType”:3,“deviceList”:[{“deviceName”:“bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb”,“devicePsrId”:“222”,“deviceType”:“aa”,“deviceRunDevName”:“222”,“mainDeviceId”:“2”},{“deviceName”:“ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc”,“devicePsrId”:“333”,“deviceType”:“aa”,“deviceRunDevName”:“333”,“mainDeviceId”:“3”}]}
见js接口代码

function CfgSave()
{
    let sndBuf = {"cmdType":0x03};
    //获取上图中表格
    var table = document.getElementById('robotMappingTable');
    var rows = table.rows;
 
    for(var i = 1; i < rows.length; i++)
    {   
        //--循环所有的行
        var cells = rows[i].cells;
        let obj = {};
        for(var j = 0; j < cells.length; j++)
        {   
            //--循环所有的列
            if(j == 4)
            {
                obj.mainDeviceId = cells[j].childNodes["0"].value;
            }
            else if(j == 0)
            {
                obj.deviceName = cells[j].innerHTML;
            }
            else if(j == 1)
            {
                obj.devicePsrId = cells[j].innerHTML;
            }
            else if(j == 2)
            {
                obj.deviceType = cells[j].innerHTML;
            }
            else if(j == 3)
            {
                obj.deviceRunDevName = cells[j].innerHTML;
            }
        }
        var last = JSON.stringify(obj);
        console.log(last)
        //添加名为deviceList的json数组obj至sndBuf。
        sndBuf.deviceList = (sndBuf.deviceList || []).concat(obj);
    }

    last = JSON.stringify(sndBuf);
    console.log(last)

    sinkNodeMsgSend(sndBuf);
}

注:sndBuf.deviceList = (sndBuf.deviceList || []).concat(obj);
该行中的obj可以改成任意json结构,例如
sndBuf.deviceList = (sndBuf.deviceList || []).concat({{“deviceName”:cells[0].innerHTML});
则生成的json结构为
{“cmdType”:3,
“deviceList”:[{“deviceName”:“bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb”},{“deviceName”:“ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc”}]
}

3.json结构解析

仍以上图为例,从web服务器获取json结构,并填入页面的表格中
//省略了deviceList部分子节点
{“cmdType”:3,“deviceList”:[{“deviceName”:“bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb”,“devicePsrId”:“222”,“deviceType”:“aa”,“deviceRunDevName”:“222”,“mainDeviceId”:“2”},{“deviceName”:“ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc”,“devicePsrId”:“333”,“deviceType”:“aa”,“deviceRunDevName”:“333”,“mainDeviceId”:“3”}]}

直接上代码

function robotMappingRspRcv(data)
{
    if(data["cmdType"] == 0x03)
    {
        //展示deviceList数据至页面
        var table = document.getElementById('robotMappingTable');
        var vPosWidth="20%";
        for(i = 0; i < data["deviceList"].length; i++)
        {
            var row = document.createElement('tr');
            row.dbFlag = false;

            var cell = document.createElement('td');
            cell.style.width="30%";
            cell.innerHTML=data["deviceList"][i]["deviceName"];
            row.appendChild(cell);

            cell = document.createElement('td');
            cell.style.width="10%"; 
            cell.innerHTML = data["deviceList"][i]["devicePsrId"];
            row.appendChild(cell);

            cell = document.createElement('td');
            cell.style.width="10%"; 
            cell.innerHTML = data["deviceList"][i]["deviceType"];
            row.appendChild(cell);

            cell = document.createElement('td');
            cell.style.width=vPosWidth; 
            cell.innerHTML = data["deviceList"][i]["deviceRunDevName"];
            row.appendChild(cell);

            cell = document.createElement('td');
            var input = document.createElement("input");
            cell.id = "maindeviceid"
            cell.style.width=vPosWidth; 
            input.type = 'text';
            input.value = data["deviceList"][i]["mainDeviceId"];
            input.style.width="100%"; 
            cell.appendChild(input);
            row.appendChild(cell);
            table.appendChild(row);
        }
    else
    {
        alert("cmdType error");
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaScript中的JSON是一种轻量级、基于文本的、可读的数据交换格式,用于在不同的应用程序之间传输和存储数据。JSON可以表示简单的数据结构,如字符串、数字、布尔值,也可以表示复杂的数据结构,如对象和数。 在JavaScript中,可以使用JSON.parse()方法JSON字符串解析为JavaScript对象,使用JSON.stringify()方法JavaScript对象转换为JSON字符串。JSON.parse()方法接受一个可选的回调函数作为第二个参数,可以对解析后的对象进行自定义处理。类似地,JSON.stringify()方法也接受可选的参数,可以对要序列化的对象进行自定义操作。 示例代码: - 使用JSON.parse()解析JSON字符串: ```javascript let json = '{"name": "js", "age": 22}'; let obj = JSON.parse(json); console.log(obj); // {name: "js", age: 22} ``` - 使用JSON.stringify()将对象转换为JSON字符串: ```javascript let obj = {name: "js", age: 22}; let json = JSON.stringify(obj); console.log(json); // {"name":"js","age":22} ``` 这些方法提供了方便的方式来处理JSON数据,使得在JavaScript中操作JSON变得更加简单和灵活。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [JavaScript核心技术之JSON详解](https://blog.csdn.net/m0_65335111/article/details/127227162)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值