访问json响应中的元素(数组)

时间:2018-05-28 06:48:36

标签: php json behat

我有两个不同的(单独的)json格式响应,我正在搜索每个都有值的元素。

使用此方法评估表达式是否有效:

public function evaluate(Json $json, $expression)
{
    if ($this->evaluationMode === 'javascript') {
        $expression = str_replace('->', '.', $expression);
    }
    try {
        return $json->read($expression, $this->propertyAccessor);
    } catch (\Exception $e) {
        throw new \Exception(sprintf('Failed to evaluate expression "%s"', $expression), 0, $e);
    }
}

一个例子以花括号开头,我相信object

{
    "nid": [
        {
            "value": 10278
        }
    ],
    ...
}

我可以通过输入nid

来访问nid[0].value

但是,当我有一个json响应包含在[]

中时
[
    {
        "test": "test",
        "title": "title"
    },
    ...
]

当我尝试test

时,我得不到有效的表达式

有效且无效的其他示例

访问data.type

有效,显示article

{
    "data": {
        "type": "article",
        "id": "123",
    ...
    }
}

无效表达式,已尝试id[0].valueid.value

[
    {
        "id": [
            {
                "value": 398
            }
        ],
    ...
    }
]

2 个答案:

答案 0 :(得分:0)

如果您需要来自Json字符串的值,那么您可以使用json-decode从Json创建数组,或者您可以使用正则表达式从Json字符串中提取值。

答案 1 :(得分:0)

[ {...}, {...} ]

是jsonArray和

{ ..., ... }

是一个json对象。

尝试使用jsonArray上的getJSONObject(index)方法从json数组访问json对象,然后可以访问json对象中的值。