如何使用PHP或JS将JSON转换为Value-Key Pair?

时间:2017-02-28 10:20:48

标签: php json search key-value

我想将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);

?>

3 个答案:

答案 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"}]