我有一个程序,其中有一个像这样的json:
{
"templateName":"example string",
"parentReference":
{
"link":"http://host:port/path/to/resource"
},
"overrides":
{
"vars":
[
{
"name":"example string",
"isRequired":false,
"defaultValue":"example string",
"provider":"example string",
"providerType":"NONE"
}
],
"tables":
[
{
"name":"example string",
"address":"example string"
}
]
},
"properties":
[
null,null
]
}
所以现在这个JSON有数组类型,对象类型和字符串类型,我需要构建一个查询参数,我需要在其中覆盖JSON中存在的所有字段
示例查询:
https://www.esxample.xom/abc?$filter=templateName%20eq%20%27suchita%27%20or&$top=20
这里,在这个查询中,templateName eq' suchita'是顶级json字符串,但是如果json值是一个数组或另一个嵌套的json,那么我需要将它表示为 覆盖/ vars / providerType这样的东西。
我试过这个
for (var key in data)
{
switch ($.type(data[key]))
{
case "string":
filterParams.push(key + " eq " + "'" + events.textVal + "'");
break;
case "object":
var dat=self._parseValues(data[key],key);
if(dat.isMoreObject)
{
window.console.log(dat.parsedData,"in true",dat.moreData);
}
else
{
window.console.log(dat.parsedData,"in false");
}
break;
case "array":
window.console.log("in array",key);
break;
}
}
_parseValues:function(data,prefix)
{
var resultData=[],resultSet={};
window.console.log(data,"is in parse method");
for(var key in data)
{
resultData.push(prefix+'/'+key);
if($.type(data[key])=="object"||$.type(data[key])=="array")
{
resultSet={parsedData:resultData,isMoreObject:true,moreData:data[key]};
}
else
{
resultSet={parsedData:resultData,isMoreObject:false};
}
}
window.console.log(resultData);
return resultSet;
}
我遇到了如何有效地使这个嵌套的json使用'/'
加入父级的问题