用json在json中搜索

时间:2011-08-12 15:12:43

标签: php json

这是json代码:

"Results":[{"username":"test","password":"test"},{"username":"test","password":"test"},{"username":"google","password":"test"},{"username":"yahoo","password":"test"}]}

您可以看到它包含多个值。我想在这段代码中搜索。

我想获取用户名:google

的密码

有没有办法用PHP做到这一点?

2 个答案:

答案 0 :(得分:3)

json代码是一种数据表示。您可以将其视为字符串,并使用php的字符串解析函数来获取所需内容,或者将其加载到数组或对象中。我将重点关注数组方法,因为它维护了JSON旨在表示的结构。有一个函数json_decode()将把你的json转换成一个数组:

$jsondata = '{"Results":[{"username":"test","password":"test"},
             {"username":"test","password":"test"},
             {"username":"google","password":"test"},
             {"username":"yahoo","password":"test"}]}';
$jsonArray = json_decode($jsondata, true);

拥有此数组后,您可以遍历它以查找所需的值:

foreach($jsonArray["Results"] as $user) {
    if($user['username'] == 'google') {
        echo "Password = " . $user['password'];
    }
}

这应该可以处理你的情况。请注意,您的JSON缺少“{”在“结果”元素之前,您可以在运行json_decode之前使用here to validate您的JSON代码。

答案 1 :(得分:2)

从php手册:

<?php
$json = '{"foo-bar": 12345}';
$obj = json_decode($json);
print $obj->{'foo-bar'}; // 12345
?>

然后你可以使用测试用例(if / else)或switch case

在对象($ obj)上做一个循环