【问题标题】:Accessing an element in json response(array) [closed]访问json响应(数组)中的元素[关闭]
【发布时间】:2018-05-28 06:48:35
【问题描述】:

我有两个不同(单独)的 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[0].value 来访问 nid 值

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

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

当我尝试test时,我没有得到一个有效的表达方式

其他有效和无效的例子:

VALID通过访问data.type,显示article

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

INVALID 表达式,试过id[0].value 或id.value

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

【问题讨论】:

    标签: php json behat


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      是一个 jsonArray 和

      { ..., ... }

      是一个 json 对象。

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

      【讨论】:

        猜你喜欢
        • 2016-07-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-30
        • 1970-01-01
        相关资源
        最近更新 更多