I have a json string like
{
"Msg1": "message 1",
"Msg2": "message 3",
"Msg3": "message 2"
}
我正在使用以下代码
function GetMessages(msg) {
$.getJSON("./jquery/sample.json", function (result) {
$.each(result, function (key, val) {
if (key == msg) {
alert(val);
}
});
}
还有其他方法可以检查我的密钥是否存在于结果数组&在不使用foreach循环的情况下获取其值? eval()可以做些什么吗?
答案 0 :(得分:3)
如果您知道属性名称,则可以直接访问它,并且不需要循环遍历其属性:
var msg = 'Msg2';
$.getJSON('./jquery/sample.json', function (result) {
alert(result[msg]);
});
答案 1 :(得分:3)
使用in
operator。
function GetMessages(msg) {
$.getJSON("./jquery/sample.json", function (result) {
if (msg in result) {
alert(result[msg]);
}
}
}
答案 2 :(得分:0)
检查是否存在
result["your_key"] !== undefined // as undefined is not a valid value this workes always
result.your_key !== undefined // works too but only if there aren't any special chars in it
获得的值是相同的,但没有比较操作。
答案 3 :(得分:0)
当你使用$ .getJSON时,你会得到一个内部对象,所以你可以用很多方法来判断:
if(result['msg']){
alert(result['msg']);
}
//
if(typeof result['msg']!=='undefined'){
...
}
//
if('msg' in result){
...
}
//
if(result.hasOwnProperty('msg')){
...
}
仔细考虑随时使用eval(),它是eve.sorry,我的英语很差,我希望它对你有用。谢谢!
答案 4 :(得分:-1)
您可以使用parseJSON
var obj = $.parseJSON('{"name":"John"}');
alert( obj.name === "John" );