2017-06-18 76 views
0

我的主頁上的用戶可以上傳我需要解析的json字段。我正在尋找可能有很多別名的特定字段。我不知道我該怎麼做才能檢查這些別名。JSON解析的別名字段

我在做什麼,現在是什麼都沒有比通過if/else語句,但我相信有我的情況有更好的選擇檢查所有可能的屬性:

function tryParseHeaders(data) { 
    var header = null 

    var normalizedHeader = {} 

    if(data.Header) 
     header = data.Header 
    else if(data.header) 
     header = data.header 
    else if(data.Headers) 
     header = data.Headers 
    else if (data.headers) 
     header = data.header 

    if(header.ProjectIdVersion) 
     normalizedHeader.projectVersion = header.ProjectIdVersion 
    else if(header.ProjectVersion) 
     normalizedHeader.projectVersion = header.ProjectVersion 
    else if(header.Version) 
     normalizedHeader.projectVersion = header.Version 

    return normalizedHeader 
} 
+0

如果你問我,你需要放下腳。設置一個API,並有_them_程序。您不應該試圖將數據強制轉換爲您期望的格式,應該是相反的方式。如果他們使用您準備的較舊的標準,則可以使用工具來幫助進行轉換。 –

回答

1

您可以使用hasOwnProperty功能,然後訪問該對象作爲字典:

function tryParseHeaders(data) { 
    var index = 0; 
    var normalizedHeader = {} 
     var headerAliases = ["Header", "header", "Headers"]; 
    var versionIdAliases = ["ProjectIdVersion", "ProjectVersion", "Version"]; 

    for(index = 0; index < headerAliases.length; index++) { 
     if(data.hasOwnProperty(headerAliases[index])) { 
     normalizedHeader.header = data[headerAliases[index]]; 
     } 
    } 

    for(index = 0; index < versionIdAliases.length; index++) { 
     if(data.hasOwnProperty(versionIdAliases[index])) { 
     normalizedHeader.projectVersion = data[versionIdAliases[index]];  
     } 
    } 

    return normalizedHeader; 
}