簡體   English   中英

無法通過Object.property訪問Javascript中的JSON元素

[英]Unable to access JSON Element in Javascript via Object.property

我無法從JSON結構訪問一個簡單的JSON元素,如下所示:

{
"ACTION": "AA",
"MESSAGE": "Customer: 30xxx Already Approved on 2017/01/01"
}

我以JSON格式獲取數據,但是當我執行data.ACTION或data.MESSAGE時,我將Undefined作為輸出。

通過區分大小寫,它不工作(附圖) 在此輸入圖像描述

var url = base + query;
var getJSON = function (url) {
    return new Promise(function (resolve, reject) {
        var xhr = new XMLHttpRequest();
        xhr.open('get', url, true);
        xhr.withCredentials = true;
        xhr.onload = function () {
            var status = xhr.status;
            if (status == 200) {
                resolve(xhr.response);
            } else {
                reject(status);
            }
        };
        xhr.send();
    });
};

getJSON(url).then(function (data) {
    console.log(data); //Getting JSON Data                   
    var output = JSON.stringify(data);
    var obj = JSON.parse(output.replace(/ 0+(?![\. }])/g, ' '));
    console.log(output);
    console.log(obj.message); //Here getting UNDEFINED                    

}, function (status) { //error detection....
    alert('Something went wrong.');
});

Console:
{"ACTION":"AA","MESSAGE":"Customer No. 0000030332 Already Approved On 20170113"}

stringify returns the following
{\"ACTION\":\"AA\",\"MESSAGE\":\"Customer No. 0000030332 Already Approved On 20170113\"}"

obj.message屬性,當您嘗試獲取未在對象上定義的屬性時,您將獲得undefined

Javascript區分大小寫。 您應該嘗試使用obj.MESSAGE來獲取屬性值。 此外,要檢查對象上是否存在屬性,可以使用object.hasOwnProperty([propName])方法檢查對象上是否存在屬性。

編輯1:嘗試運行以下代碼段。 在訪問屬性之前解析JSON數據字符串。

 var jsonString = "{\\"ACTION\\":\\"AA\\",\\"MESSAGE\\":\\"Customer No. 0000030332 Already Approved On 20170113\\"}"; var obj = JSON.parse(jsonString); console.log(obj.MESSAGE); 

編輯。 我首先想到的是錯誤是由於解析而造成的。 -.-

解決方案:打印輸出時, obj仍然是字符串,而不是對象。 所以那時候還可以。

您的“未定義”屬性message應由MESSAGE替換。 而不是console.log(obj.message); 只需使用console.log(obj.MESSAGE);

也。 解析JSON的一個例子:

var myJson = '{"ACTION":"AA","MESSAGE":"Customer No. 0000030332 Already Approved On 20170113"}';
console.log(myJson);   // This prints the literal string  
console.log(JSON.parse(myJson)); // this prints an "object"

data已經是一個JSON字符串,不需要JSON.stringify它(它返回一個帶有JSON編碼的字符串文字的字符串)。 將其解析為output只會再次導致字符串,該字符串沒有屬性。 你應該用

console.log(data);
var obj = JSON.parse(data);
console.log(obj);
obj.MESSAGE = obj.MESSAGE.replace(/ 0+(?![\. }])/g, ' ');

(注意屬性名稱的正確外殼)

你可以試試:

var jsonObject = data.data;
console.log(jsonObject.ACTION)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM