2017-06-18 499 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; 
}