簡體   English   中英

JSON響應錯誤地匹配顏色數據的部分鍵

[英]JSON response incorrectly matches partial key for color data

下面的JavaScript代碼由於jsonData.search(key)!== -1而與“ COMPLETED”匹配,這是錯誤的,因為JSON響應不包含COMPLETED,因此輸出中應顯示紅色而不是綠色。

參考:

使用JSON數據獲取特定顏色的特定值

輸出:[“綠色”,“紅色”]


預期:[“紅色”]

jsonData:

{"cols":[{"label":"sprint_status","type":"string"},{"label":"count","type":"string"}],"rows":[{"c":[{"v":"NOT_COMPLETED"},{"v":4}]}]}

JavaScript:

const colorMap = {
    COMPLETED: 'green',
    NOT_COMPLETED: 'red'
};

Object.keys(colorMap).forEach((key, index) => {
    if (jsonData.search(key) !== -1) {
        customColors.push(colorMap[key]);
    }
});

實際輸出:

彩色鍵由於搜索(鍵)而首先匹配為“ COMPLETED-green”。

預期產量:

顏色鍵應首先匹配“ NOT_COMPLETED-紅色”。

如何與NOT_COMPLETED-讀取顏色而不是COMPLETED-綠色匹配?

這個https://jsfiddle.net/xq7hLo6h/6/通過簡單地在JSON字符串中搜索"KEY" (帶引號)而不是KEY來解決此問題:

if (jsonData.search("\"" + key + "\"") >= 0) { /* ... */ }

這樣可以避免在"NOT_COMPLETED"內部發現COMPLETED的問題。

但是,更健壯的方法是實際解析JSON字符串以獲取對象,然后檢查實際屬性。

暫無
暫無

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

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