如何在Javascript中从JSON格式获取数据

问题描述 投票:0回答:1

我一直在努力解决如何从对 Sony Bravia 电视查询的 JSON 结构化响应中检索数据。 我尝试了几种语法变体来仅获取单个元素的数据,但没有什么乐趣。

响应被发送到 ID 为“log”的文本区域字段。 以下是显示的内容:

{
    "result": [
    [
        {
            "target": "speaker",
            "volume": 22,
            "mute": false,
            "maxVolume": 100,
            "minVolume": 0
        }
    ]
            ],
    "id": 1
}

javascript函数如下。 在最后一行中,我试图查看单个元素,但什么也没得到。最后一行应该是什么?

    var gblJSONresponse = [];
    function send(service, method, params) {
        var ip = 'xxx.xxx.xxx.xxx';
        var psk = 'xxxx';
        var xhr = new XMLHttpRequest();
        xhr.onload = function() {
            var resp = xhr.responseText;
            gblJSONresponse = JSON.parse(xhr.response);
            log(JSON.stringify(JSON.parse(xhr.response), null, '  '));
        };

        xhr.open('POST', 'http://' + ip + '/sony/' + service);
        if (psk) {
            xhr.setRequestHeader('X-Auth-PSK', psk);
        }

        xhr.send(JSON.stringify({
            method: method,
            version: '1.0',
            id: 1,
            params: params ? [params] : [],
        }));

        window.alert("JSONresponse:\n"+JSONresponse[0].result[0].target);
    }

json javascript-objects
1个回答
0
投票

我认为你正在解析响应而不是responseText

检查responseType是否设置为json或text,如果设置为text则查看responseText,否则它将出现在响应中

XMLHttpRequest.response 只读 返回一个 ArrayBuffer、一个 Blob、一个 文档、JavaScript 对象或字符串,具体取决于 XMLHttpRequest.responseType,包含响应实体主体。

XMLHttpRequest.responseText 只读 返回包含以下内容的字符串 对请求的响应为文本,如果请求为 null,则为 null 不成功或尚未发送。

来自此处的 Mozilla 网络文档

© www.soinside.com 2019 - 2024. All rights reserved.