我想将JSON文件转换为key:value对,意味着
[
{"value":"apple","label":"apple"},
{"value":"Google","label":"Google"}
]
如下 键:值 对格式,如下
{
"apple": "apple",
"google": "google",
.......
.....
......
......
}
所以任何人都可以告诉我我该怎么做,下面是Php文件代码,我从psql数据库中获取数据并将其存储在文件中。
dbconn.php
<?php
$db = pg_connect("host=localhost port=5432 dbname=postgres user=postgres password=root123");
pg_select($db, 'post_log', $_POST); //selecting database
$query=pg_query("SELECT name FROM account");
$json=array();
while($student=pg_fetch_array($query)){
$json[]=array(
'value'=> $student["name"],
'label'=>$student["name"]);
}
$textval = json_encode($json); //encoding
file_put_contents('textvalues.txt', $textval);
?>
答案 0 :(得分:1)
以这种方式(在foreach
中):
$obj = new stdClass();
$obj->label=1;
$obj->value=2;
$json[]=$obj;
$obj = new stdClass();
$obj->label=3;
$obj->value=4;
$json[]=$obj;
print_r(json_encode($json));
结果[{"label":1,"value":2},{"label":3,"value":4}]
或仅限一个对象
$obj = new stdClass();
$array = [['name'=>'test'],['name'=>'foo']];
foreach($array as $var)
$obj->{$var['name']}=$var['name'];
print_r(json_encode($obj));
结果{"test":"test","foo":"foo"}
注意:我在这里使用stdClass
,所以任何人都可以直接看到它将成为json(也是一个对象)的内容,并且不应该与索引键一起使用。 <{1}}将成为print_r(json_encode([1,'foo'=>'sadsd']));
,不是那么好。
答案 1 :(得分:1)
要获得具有键/值对的单个对象,请使用以下简单方法:
...
while ($student = pg_fetch_array($query)) {
$json[$student["name"]] = $student["name"];
}
...
答案 2 :(得分:0)
只需更改while循环
while($student=pg_fetch_array($query)){
$student_name=$student['name'];
$res[$student_name] =$student_name;
array_push($json,$res);
}
echo json_encode($return_arr);
这将返回以下格式的json字符串:
[{"xyz":"xyz"},{"abc":"abc"}]