Php 使用Javascript访问JSON对象

Php 使用Javascript访问JSON对象,php,javascript,json,Php,Javascript,Json,我有以下JSON对象 ({ "codes": [ { "code": { "redeemed": "true", "retailer": "R1", "code": "ab11845b55b3ef1c3f137a35dbdfb270" } }, { "code": { "redeemed": "false", "code": "48c02

我有以下JSON对象

({
    "codes": [ {
            "code": {
                "redeemed": "true", "retailer": "R1", "code": "ab11845b55b3ef1c3f137a35dbdfb270"
            }
        }, {
            "code": {
                "redeemed": "false", "code": "48c02f7bd35271de0aa215209b0a390f", "message": "code already used"
            }
        } ]
});

for (var code in data.codes) {
    console.log(code) // prints 0
    console.log(code[0].id) // prints 0
}
如何单独访问内部对象?

for(var stuff in which)返回对象的索引。 因此,基本上,要访问您的对象,您必须

console.log(data.codes[code]);
console.log(data.codes[code].id);

下次请以可读的方式格式化json,此处难以阅读:)

要输出每个
“code”
对象:

// First, assign your data to a variable:
var data = ({
    "codes": [ {
        "code": {
            "redeemed": "true", "retailer": "R1", "code": "ab11845b55b3ef1c3f137a35dbdfb270"
        }
    }, {
        "code": {
            "redeemed": "false", "code": "48c02f7bd35271de0aa215209b0a390f", "message": "code already used"
        }
    } ]
});

// (I use the "c" temprary variable here because it's shorter)
var c = data.codes;
// Loop through all the codes.
for (var i = 0; i < c.length; i++) {
    // Log the specific code at [i].
    console.log(c[i].code);  // Output a "code" object.
}
但是,当它们未设置为特定
“code”
对象的属性时,它们将返回
未定义的


假设您添加了以下内容:

window.json_obj = ({"codes":[{"code":{"redeemed":"true","retailer":"R1","code":"ab11845b55b3ef1c3f137a35dbdfb270"}},{"code":{"redeemed":"false","code":"48c02f7bd35271de0aa215209b0a390f","message":"code already used"}}]});

console.log(json_obj.codes[0]['code']['code']);

// or
// console.log(json_obj.codes[0].code.code);
console.log( obj.codes[0].code.retailer );
console.log( obj.codes[1].code.message );

console.log( obj.codes[0].code.retailer );
console.log( obj.codes[1].code.message );
输出

R1
已使用的代码

所有对象都没有
id
属性。

首先:

如果您没有理由将JSON放在以下位置,则JSON不应放在选项中:

(<JSON>);
一旦这样做,您就可以访问:

data.codes[i].code.code;
data.codes[i].code.redeemed;
PS:如果它不是一个完整的字符串

'{ "codes":[{"code":"...",...},...]}'
那么它不是JSON对象,而是JavaScript对象。
是的,听起来很挑剔。

但归根结底,在正确使用它之前,您是否需要解析它以及如何解析它。

我在任何地方都没有看到“id”属性。您是否使用JSON.parse将JSON实际构建到JSO中?
yourarray['codes'][0]…
?正如他之前所说的,我没有看到JSONJSON中的id段JSON不允许外部的
()
或尾随的
。对于将来的参考,请在firebug中执行console.log(json_obj),然后单击元素“logged”并在DOM选项卡中分析它。此处,您不需要括号符号。(尤其是第一个
['code']
),因为它是一个默认/必需(非动态)属性。哦,哎哟,错过了那个属性。用data.code[0].code.id获取了它,它类似于这里。Thanks我假设使用
id
您指的是
赎回的
零售商
之类的属性之一?
'{ "codes":[{"code":"...",...},...]}'