2
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() で何かできますか?

4

5 に答える 5

3

in 演算子を使用します。

function GetMessages(msg) {
   $.getJSON("./jquery/sample.json", function (result) {
       if (msg in result) {
           alert(result[msg]);
       }
    }
}
于 2013-01-23T08:11:52.967 に答える
3

プロパティ名がわかっている場合は、直接アクセスでき、そのプロパティをループする必要はありません。

var msg = 'Msg2';

$.getJSON('./jquery/sample.json', function (result) {
    alert(result[msg]);
});
于 2013-01-23T08:05:08.720 に答える
0

$.getJSON を使用すると、interal オブジェクトが取得されるため、さまざまな方法で判断できます。

if(result['msg']){
    alert(result['msg']);
}
//
if(typeof result['msg']!=='undefined'){
    ...
} 
//
if('msg' in result){
    ...
}
//
if(result.hasOwnProperty('msg')){
    ...
}

いつでも eval() を使用するように慎重に考えてください。eve です。申し訳ありませんが、私の英語は下手です。

于 2013-01-23T08:29:44.070 に答える
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

値の取得は同じですが、比較操作はありません。

于 2013-01-23T08:15:47.773 に答える
-1

parseJSONを使用できます

var obj = $.parseJSON('{"name":"John"}');
alert( obj.name === "John" );

http://api.jquery.com/jQuery.parseJSON/

于 2013-01-23T08:10:09.987 に答える