我有一个JSON文件,里面有很多数据。
JSON文件示例:
{
"thefirst": {
"one": {
"color1": "red",
"color2": "blue"
},
"two": {
"color3": "green",
"color4": "purple"
},
"three": {
"color5": "yellow",
"color6": "white"
}
},
"thesecond": {
"one": {
"color1": "black",
"color2": "grey"
},
"two": {
"color3": "navy",
"color4": "white"
},
"three": {
"color5": "purple",
"color6": "red"
}
},
"thethird": {
"one": {
"color1": "maroon",
"color2": "white"
},
"two": {
"color3": "red",
"color4": "orange"
},
"three": {
"color5": "green",
"color6": "blue"
}
}
}
我的问题是,使用Jquery(客户端)$.getJSON...
或php
,是否可以获得给定值的相应值?
因此,例如,对于每个red
值,我希望相应的值为red
。因此,对于上面的示例,这将是blue
,purple
和orange
。
我不知道它是否可能,所以我不确定如何去做。
我想知道使用Jquery $.each(array, function (key, value))...
是否可行,或者使用php在解码JSON文件loop
后可能生成foreach ($key => $Value)
和/或json_decode
。
但我不确定该怎么做。
提前感谢您的帮助。
答案 0 :(得分:1)
解码 JSON
数据并嵌套两个级别并应用逻辑,如图所示。请参阅下面的工作演示。
<?php
$arr =json_decode($json,1); //<------- Pass your JSON string into the $json variable.
$str = "";
$keyword='red'; //<------- Pass any color you want to get its corresponding match
foreach($arr as $arr1)
{
foreach($arr1 as $arr3)
{
foreach($arr3 as $k=>$v)
{
if(in_array($keyword,$arr3))
{
$str.=implode(' ',$arr3)." ";
}
}
}
}
$str=trim(str_replace($keyword,'',$str));
$str_arr = explode(' ',$str);
print_r(array_values(array_filter(array_unique($str_arr),'strlen')));
<强> OUTPUT :
强>
Array
(
[0] => blue
[1] => purple
[2] => orange
)
感谢您的帮助。这就是我想要的。一个问题, 如果我想将输出数组保存到新的json文件中,我可以使用 json_encode和file_put_contents方法?
$outputarr = array_values(array_filter(array_unique($str_arr),'strlen'));
$jsonencstring = json_encode($outputarr); //<-- This is a JSON now
file_put_contents('yourfilename.txt',$jsonencstring);